//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package org.jf.smali;

import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.Stack;
import org.antlr.runtime.BitSet;
import org.antlr.runtime.MismatchedSetException;
import org.antlr.runtime.NoViableAltException;
import org.antlr.runtime.RecognitionException;
import org.antlr.runtime.RecognizerSharedState;
import org.antlr.runtime.tree.CommonTree;
import org.antlr.runtime.tree.TreeNodeStream;
import org.antlr.runtime.tree.TreeParser;
import org.antlr.runtime.tree.TreeRuleReturnScope;
import org.jf.dexlib2.AccessFlags;
import org.jf.dexlib2.AnnotationVisibility;
import org.jf.dexlib2.HiddenApiRestriction;
import org.jf.dexlib2.MethodHandleType;
import org.jf.dexlib2.Opcode;
import org.jf.dexlib2.Opcodes;
import org.jf.dexlib2.VerificationError;
import org.jf.dexlib2.builder.Label;
import org.jf.dexlib2.builder.MethodImplementationBuilder;
import org.jf.dexlib2.builder.SwitchLabelElement;
import org.jf.dexlib2.builder.instruction.BuilderArrayPayload;
import org.jf.dexlib2.builder.instruction.BuilderInstruction10t;
import org.jf.dexlib2.builder.instruction.BuilderInstruction10x;
import org.jf.dexlib2.builder.instruction.BuilderInstruction11n;
import org.jf.dexlib2.builder.instruction.BuilderInstruction11x;
import org.jf.dexlib2.builder.instruction.BuilderInstruction12x;
import org.jf.dexlib2.builder.instruction.BuilderInstruction20bc;
import org.jf.dexlib2.builder.instruction.BuilderInstruction20t;
import org.jf.dexlib2.builder.instruction.BuilderInstruction21c;
import org.jf.dexlib2.builder.instruction.BuilderInstruction21ih;
import org.jf.dexlib2.builder.instruction.BuilderInstruction21lh;
import org.jf.dexlib2.builder.instruction.BuilderInstruction21s;
import org.jf.dexlib2.builder.instruction.BuilderInstruction21t;
import org.jf.dexlib2.builder.instruction.BuilderInstruction22b;
import org.jf.dexlib2.builder.instruction.BuilderInstruction22c;
import org.jf.dexlib2.builder.instruction.BuilderInstruction22s;
import org.jf.dexlib2.builder.instruction.BuilderInstruction22t;
import org.jf.dexlib2.builder.instruction.BuilderInstruction22x;
import org.jf.dexlib2.builder.instruction.BuilderInstruction23x;
import org.jf.dexlib2.builder.instruction.BuilderInstruction30t;
import org.jf.dexlib2.builder.instruction.BuilderInstruction31c;
import org.jf.dexlib2.builder.instruction.BuilderInstruction31i;
import org.jf.dexlib2.builder.instruction.BuilderInstruction31t;
import org.jf.dexlib2.builder.instruction.BuilderInstruction32x;
import org.jf.dexlib2.builder.instruction.BuilderInstruction35c;
import org.jf.dexlib2.builder.instruction.BuilderInstruction3rc;
import org.jf.dexlib2.builder.instruction.BuilderInstruction45cc;
import org.jf.dexlib2.builder.instruction.BuilderInstruction4rcc;
import org.jf.dexlib2.builder.instruction.BuilderInstruction51l;
import org.jf.dexlib2.builder.instruction.BuilderPackedSwitchPayload;
import org.jf.dexlib2.builder.instruction.BuilderSparseSwitchPayload;
import org.jf.dexlib2.iface.Annotation;
import org.jf.dexlib2.iface.AnnotationElement;
import org.jf.dexlib2.iface.ClassDef;
import org.jf.dexlib2.iface.MethodImplementation;
import org.jf.dexlib2.iface.value.EncodedValue;
import org.jf.dexlib2.immutable.ImmutableAnnotation;
import org.jf.dexlib2.immutable.ImmutableAnnotationElement;
import org.jf.dexlib2.immutable.reference.ImmutableCallSiteReference;
import org.jf.dexlib2.immutable.reference.ImmutableFieldReference;
import org.jf.dexlib2.immutable.reference.ImmutableMethodHandleReference;
import org.jf.dexlib2.immutable.reference.ImmutableMethodProtoReference;
import org.jf.dexlib2.immutable.reference.ImmutableMethodReference;
import org.jf.dexlib2.immutable.reference.ImmutableReference;
import org.jf.dexlib2.immutable.reference.ImmutableTypeReference;
import org.jf.dexlib2.immutable.value.ImmutableAnnotationEncodedValue;
import org.jf.dexlib2.immutable.value.ImmutableArrayEncodedValue;
import org.jf.dexlib2.immutable.value.ImmutableBooleanEncodedValue;
import org.jf.dexlib2.immutable.value.ImmutableByteEncodedValue;
import org.jf.dexlib2.immutable.value.ImmutableCharEncodedValue;
import org.jf.dexlib2.immutable.value.ImmutableDoubleEncodedValue;
import org.jf.dexlib2.immutable.value.ImmutableEncodedValue;
import org.jf.dexlib2.immutable.value.ImmutableEnumEncodedValue;
import org.jf.dexlib2.immutable.value.ImmutableFieldEncodedValue;
import org.jf.dexlib2.immutable.value.ImmutableFloatEncodedValue;
import org.jf.dexlib2.immutable.value.ImmutableIntEncodedValue;
import org.jf.dexlib2.immutable.value.ImmutableLongEncodedValue;
import org.jf.dexlib2.immutable.value.ImmutableMethodEncodedValue;
import org.jf.dexlib2.immutable.value.ImmutableMethodHandleEncodedValue;
import org.jf.dexlib2.immutable.value.ImmutableMethodTypeEncodedValue;
import org.jf.dexlib2.immutable.value.ImmutableNullEncodedValue;
import org.jf.dexlib2.immutable.value.ImmutableShortEncodedValue;
import org.jf.dexlib2.immutable.value.ImmutableStringEncodedValue;
import org.jf.dexlib2.immutable.value.ImmutableTypeEncodedValue;
import org.jf.dexlib2.util.MethodUtil;
import org.jf.dexlib2.writer.builder.BuilderField;
import org.jf.dexlib2.writer.builder.BuilderMethod;
import org.jf.dexlib2.writer.builder.BuilderTryBlock;
import org.jf.dexlib2.writer.builder.DexBuilder;
import org.jf.util.LinearSearch;

public class smaliTreeWalker extends TreeParser {
    public static final String[] tokenNames = new String[]{"<invalid>", "<EOR>", "<DOWN>", "<UP>", "ACCESS_SPEC", "ANNOTATION_DIRECTIVE", "ANNOTATION_VISIBILITY", "ARRAY_DATA_DIRECTIVE", "ARRAY_TYPE_PREFIX", "ARROW", "AT", "BOOL_LITERAL", "BYTE_LITERAL", "CATCHALL_DIRECTIVE", "CATCH_DIRECTIVE", "CHAR_LITERAL", "CLASS_DESCRIPTOR", "CLASS_DIRECTIVE", "CLOSE_BRACE", "CLOSE_PAREN", "COLON", "COMMA", "DOTDOT", "DOUBLE_LITERAL", "DOUBLE_LITERAL_OR_ID", "END_ANNOTATION_DIRECTIVE", "END_ARRAY_DATA_DIRECTIVE", "END_FIELD_DIRECTIVE", "END_LOCAL_DIRECTIVE", "END_METHOD_DIRECTIVE", "END_PACKED_SWITCH_DIRECTIVE", "END_PARAMETER_DIRECTIVE", "END_SPARSE_SWITCH_DIRECTIVE", "END_SUBANNOTATION_DIRECTIVE", "ENUM_DIRECTIVE", "EPILOGUE_DIRECTIVE", "EQUAL", "FIELD_DIRECTIVE", "FIELD_OFFSET", "FLOAT_LITERAL", "FLOAT_LITERAL_OR_ID", "HIDDENAPI_RESTRICTION", "IMPLEMENTS_DIRECTIVE", "INLINE_INDEX", "INSTRUCTION_FORMAT10t", "INSTRUCTION_FORMAT10x", "INSTRUCTION_FORMAT10x_ODEX", "INSTRUCTION_FORMAT11n", "INSTRUCTION_FORMAT11x", "INSTRUCTION_FORMAT12x", "INSTRUCTION_FORMAT12x_OR_ID", "INSTRUCTION_FORMAT20bc", "INSTRUCTION_FORMAT20t", "INSTRUCTION_FORMAT21c_FIELD", "INSTRUCTION_FORMAT21c_FIELD_ODEX", "INSTRUCTION_FORMAT21c_METHOD_HANDLE", "INSTRUCTION_FORMAT21c_METHOD_TYPE", "INSTRUCTION_FORMAT21c_STRING", "INSTRUCTION_FORMAT21c_TYPE", "INSTRUCTION_FORMAT21ih", "INSTRUCTION_FORMAT21lh", "INSTRUCTION_FORMAT21s", "INSTRUCTION_FORMAT21t", "INSTRUCTION_FORMAT22b", "INSTRUCTION_FORMAT22c_FIELD", "INSTRUCTION_FORMAT22c_FIELD_ODEX", "INSTRUCTION_FORMAT22c_TYPE", "INSTRUCTION_FORMAT22cs_FIELD", "INSTRUCTION_FORMAT22s", "INSTRUCTION_FORMAT22s_OR_ID", "INSTRUCTION_FORMAT22t", "INSTRUCTION_FORMAT22x", "INSTRUCTION_FORMAT23x", "INSTRUCTION_FORMAT30t", "INSTRUCTION_FORMAT31c", "INSTRUCTION_FORMAT31i", "INSTRUCTION_FORMAT31i_OR_ID", "INSTRUCTION_FORMAT31t", "INSTRUCTION_FORMAT32x", "INSTRUCTION_FORMAT35c_CALL_SITE", "INSTRUCTION_FORMAT35c_METHOD", "INSTRUCTION_FORMAT35c_METHOD_ODEX", "INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE", "INSTRUCTION_FORMAT35c_TYPE", "INSTRUCTION_FORMAT35mi_METHOD", "INSTRUCTION_FORMAT35ms_METHOD", "INSTRUCTION_FORMAT3rc_CALL_SITE", "INSTRUCTION_FORMAT3rc_METHOD", "INSTRUCTION_FORMAT3rc_METHOD_ODEX", "INSTRUCTION_FORMAT3rc_TYPE", "INSTRUCTION_FORMAT3rmi_METHOD", "INSTRUCTION_FORMAT3rms_METHOD", "INSTRUCTION_FORMAT45cc_METHOD", "INSTRUCTION_FORMAT4rcc_METHOD", "INSTRUCTION_FORMAT51l", "INTEGER_LITERAL", "INVALID_TOKEN", "I_ACCESS_LIST", "I_ACCESS_OR_RESTRICTION_LIST", "I_ANNOTATION", "I_ANNOTATIONS", "I_ANNOTATION_ELEMENT", "I_ARRAY_ELEMENTS", "I_ARRAY_ELEMENT_SIZE", "I_CALL_SITE_EXTRA_ARGUMENTS", "I_CALL_SITE_REFERENCE", "I_CATCH", "I_CATCHALL", "I_CATCHES", "I_CLASS_DEF", "I_ENCODED_ARRAY", "I_ENCODED_ENUM", "I_ENCODED_FIELD", "I_ENCODED_METHOD", "I_ENCODED_METHOD_HANDLE", "I_END_LOCAL", "I_EPILOGUE", "I_FIELD", "I_FIELDS", "I_FIELD_INITIAL_VALUE", "I_FIELD_TYPE", "I_IMPLEMENTS", "I_LABEL", "I_LINE", "I_LOCAL", "I_LOCALS", "I_METHOD", "I_METHODS", "I_METHOD_PROTOTYPE", "I_METHOD_RETURN_TYPE", "I_ORDERED_METHOD_ITEMS", "I_PACKED_SWITCH_ELEMENTS", "I_PACKED_SWITCH_START_KEY", "I_PARAMETER", "I_PARAMETERS", "I_PARAMETER_NOT_SPECIFIED", "I_PROLOGUE", "I_REGISTERS", "I_REGISTER_LIST", "I_REGISTER_RANGE", "I_RESTART_LOCAL", "I_SOURCE", "I_SPARSE_SWITCH_ELEMENTS", "I_STATEMENT_ARRAY_DATA", "I_STATEMENT_FORMAT10t", "I_STATEMENT_FORMAT10x", "I_STATEMENT_FORMAT11n", "I_STATEMENT_FORMAT11x", "I_STATEMENT_FORMAT12x", "I_STATEMENT_FORMAT20bc", "I_STATEMENT_FORMAT20t", "I_STATEMENT_FORMAT21c_FIELD", "I_STATEMENT_FORMAT21c_METHOD_HANDLE", "I_STATEMENT_FORMAT21c_METHOD_TYPE", "I_STATEMENT_FORMAT21c_STRING", "I_STATEMENT_FORMAT21c_TYPE", "I_STATEMENT_FORMAT21ih", "I_STATEMENT_FORMAT21lh", "I_STATEMENT_FORMAT21s", "I_STATEMENT_FORMAT21t", "I_STATEMENT_FORMAT22b", "I_STATEMENT_FORMAT22c_FIELD", "I_STATEMENT_FORMAT22c_TYPE", "I_STATEMENT_FORMAT22s", "I_STATEMENT_FORMAT22t", "I_STATEMENT_FORMAT22x", "I_STATEMENT_FORMAT23x", "I_STATEMENT_FORMAT30t", "I_STATEMENT_FORMAT31c", "I_STATEMENT_FORMAT31i", "I_STATEMENT_FORMAT31t", "I_STATEMENT_FORMAT32x", "I_STATEMENT_FORMAT35c_CALL_SITE", "I_STATEMENT_FORMAT35c_METHOD", "I_STATEMENT_FORMAT35c_TYPE", "I_STATEMENT_FORMAT3rc_CALL_SITE", "I_STATEMENT_FORMAT3rc_METHOD", "I_STATEMENT_FORMAT3rc_TYPE", "I_STATEMENT_FORMAT45cc_METHOD", "I_STATEMENT_FORMAT4rcc_METHOD", "I_STATEMENT_FORMAT51l", "I_STATEMENT_PACKED_SWITCH", "I_STATEMENT_SPARSE_SWITCH", "I_SUBANNOTATION", "I_SUPER", "LINE_COMMENT", "LINE_DIRECTIVE", "LOCALS_DIRECTIVE", "LOCAL_DIRECTIVE", "LONG_LITERAL", "MEMBER_NAME", "METHOD_DIRECTIVE", "METHOD_HANDLE_TYPE_FIELD", "METHOD_HANDLE_TYPE_METHOD", "NEGATIVE_INTEGER_LITERAL", "NULL_LITERAL", "OPEN_BRACE", "OPEN_PAREN", "PACKED_SWITCH_DIRECTIVE", "PARAMETER_DIRECTIVE", "PARAM_LIST_OR_ID_PRIMITIVE_TYPE", "POSITIVE_INTEGER_LITERAL", "PRIMITIVE_TYPE", "PROLOGUE_DIRECTIVE", "REGISTER", "REGISTERS_DIRECTIVE", "RESTART_LOCAL_DIRECTIVE", "SHORT_LITERAL", "SIMPLE_NAME", "SOURCE_DIRECTIVE", "SPARSE_SWITCH_DIRECTIVE", "STRING_LITERAL", "SUBANNOTATION_DIRECTIVE", "SUPER_DIRECTIVE", "VERIFICATION_ERROR_TYPE", "VOID_TYPE", "VTABLE_INDEX", "WHITE_SPACE"};
    public static final int EOF = -1;
    public static final int ACCESS_SPEC = 4;
    public static final int ANNOTATION_DIRECTIVE = 5;
    public static final int ANNOTATION_VISIBILITY = 6;
    public static final int ARRAY_DATA_DIRECTIVE = 7;
    public static final int ARRAY_TYPE_PREFIX = 8;
    public static final int ARROW = 9;
    public static final int AT = 10;
    public static final int BOOL_LITERAL = 11;
    public static final int BYTE_LITERAL = 12;
    public static final int CATCHALL_DIRECTIVE = 13;
    public static final int CATCH_DIRECTIVE = 14;
    public static final int CHAR_LITERAL = 15;
    public static final int CLASS_DESCRIPTOR = 16;
    public static final int CLASS_DIRECTIVE = 17;
    public static final int CLOSE_BRACE = 18;
    public static final int CLOSE_PAREN = 19;
    public static final int COLON = 20;
    public static final int COMMA = 21;
    public static final int DOTDOT = 22;
    public static final int DOUBLE_LITERAL = 23;
    public static final int DOUBLE_LITERAL_OR_ID = 24;
    public static final int END_ANNOTATION_DIRECTIVE = 25;
    public static final int END_ARRAY_DATA_DIRECTIVE = 26;
    public static final int END_FIELD_DIRECTIVE = 27;
    public static final int END_LOCAL_DIRECTIVE = 28;
    public static final int END_METHOD_DIRECTIVE = 29;
    public static final int END_PACKED_SWITCH_DIRECTIVE = 30;
    public static final int END_PARAMETER_DIRECTIVE = 31;
    public static final int END_SPARSE_SWITCH_DIRECTIVE = 32;
    public static final int END_SUBANNOTATION_DIRECTIVE = 33;
    public static final int ENUM_DIRECTIVE = 34;
    public static final int EPILOGUE_DIRECTIVE = 35;
    public static final int EQUAL = 36;
    public static final int FIELD_DIRECTIVE = 37;
    public static final int FIELD_OFFSET = 38;
    public static final int FLOAT_LITERAL = 39;
    public static final int FLOAT_LITERAL_OR_ID = 40;
    public static final int HIDDENAPI_RESTRICTION = 41;
    public static final int IMPLEMENTS_DIRECTIVE = 42;
    public static final int INLINE_INDEX = 43;
    public static final int INSTRUCTION_FORMAT10t = 44;
    public static final int INSTRUCTION_FORMAT10x = 45;
    public static final int INSTRUCTION_FORMAT10x_ODEX = 46;
    public static final int INSTRUCTION_FORMAT11n = 47;
    public static final int INSTRUCTION_FORMAT11x = 48;
    public static final int INSTRUCTION_FORMAT12x = 49;
    public static final int INSTRUCTION_FORMAT12x_OR_ID = 50;
    public static final int INSTRUCTION_FORMAT20bc = 51;
    public static final int INSTRUCTION_FORMAT20t = 52;
    public static final int INSTRUCTION_FORMAT21c_FIELD = 53;
    public static final int INSTRUCTION_FORMAT21c_FIELD_ODEX = 54;
    public static final int INSTRUCTION_FORMAT21c_METHOD_HANDLE = 55;
    public static final int INSTRUCTION_FORMAT21c_METHOD_TYPE = 56;
    public static final int INSTRUCTION_FORMAT21c_STRING = 57;
    public static final int INSTRUCTION_FORMAT21c_TYPE = 58;
    public static final int INSTRUCTION_FORMAT21ih = 59;
    public static final int INSTRUCTION_FORMAT21lh = 60;
    public static final int INSTRUCTION_FORMAT21s = 61;
    public static final int INSTRUCTION_FORMAT21t = 62;
    public static final int INSTRUCTION_FORMAT22b = 63;
    public static final int INSTRUCTION_FORMAT22c_FIELD = 64;
    public static final int INSTRUCTION_FORMAT22c_FIELD_ODEX = 65;
    public static final int INSTRUCTION_FORMAT22c_TYPE = 66;
    public static final int INSTRUCTION_FORMAT22cs_FIELD = 67;
    public static final int INSTRUCTION_FORMAT22s = 68;
    public static final int INSTRUCTION_FORMAT22s_OR_ID = 69;
    public static final int INSTRUCTION_FORMAT22t = 70;
    public static final int INSTRUCTION_FORMAT22x = 71;
    public static final int INSTRUCTION_FORMAT23x = 72;
    public static final int INSTRUCTION_FORMAT30t = 73;
    public static final int INSTRUCTION_FORMAT31c = 74;
    public static final int INSTRUCTION_FORMAT31i = 75;
    public static final int INSTRUCTION_FORMAT31i_OR_ID = 76;
    public static final int INSTRUCTION_FORMAT31t = 77;
    public static final int INSTRUCTION_FORMAT32x = 78;
    public static final int INSTRUCTION_FORMAT35c_CALL_SITE = 79;
    public static final int INSTRUCTION_FORMAT35c_METHOD = 80;
    public static final int INSTRUCTION_FORMAT35c_METHOD_ODEX = 81;
    public static final int INSTRUCTION_FORMAT35c_METHOD_OR_METHOD_HANDLE_TYPE = 82;
    public static final int INSTRUCTION_FORMAT35c_TYPE = 83;
    public static final int INSTRUCTION_FORMAT35mi_METHOD = 84;
    public static final int INSTRUCTION_FORMAT35ms_METHOD = 85;
    public static final int INSTRUCTION_FORMAT3rc_CALL_SITE = 86;
    public static final int INSTRUCTION_FORMAT3rc_METHOD = 87;
    public static final int INSTRUCTION_FORMAT3rc_METHOD_ODEX = 88;
    public static final int INSTRUCTION_FORMAT3rc_TYPE = 89;
    public static final int INSTRUCTION_FORMAT3rmi_METHOD = 90;
    public static final int INSTRUCTION_FORMAT3rms_METHOD = 91;
    public static final int INSTRUCTION_FORMAT45cc_METHOD = 92;
    public static final int INSTRUCTION_FORMAT4rcc_METHOD = 93;
    public static final int INSTRUCTION_FORMAT51l = 94;
    public static final int INTEGER_LITERAL = 95;
    public static final int INVALID_TOKEN = 96;
    public static final int I_ACCESS_LIST = 97;
    public static final int I_ACCESS_OR_RESTRICTION_LIST = 98;
    public static final int I_ANNOTATION = 99;
    public static final int I_ANNOTATIONS = 100;
    public static final int I_ANNOTATION_ELEMENT = 101;
    public static final int I_ARRAY_ELEMENTS = 102;
    public static final int I_ARRAY_ELEMENT_SIZE = 103;
    public static final int I_CALL_SITE_EXTRA_ARGUMENTS = 104;
    public static final int I_CALL_SITE_REFERENCE = 105;
    public static final int I_CATCH = 106;
    public static final int I_CATCHALL = 107;
    public static final int I_CATCHES = 108;
    public static final int I_CLASS_DEF = 109;
    public static final int I_ENCODED_ARRAY = 110;
    public static final int I_ENCODED_ENUM = 111;
    public static final int I_ENCODED_FIELD = 112;
    public static final int I_ENCODED_METHOD = 113;
    public static final int I_ENCODED_METHOD_HANDLE = 114;
    public static final int I_END_LOCAL = 115;
    public static final int I_EPILOGUE = 116;
    public static final int I_FIELD = 117;
    public static final int I_FIELDS = 118;
    public static final int I_FIELD_INITIAL_VALUE = 119;
    public static final int I_FIELD_TYPE = 120;
    public static final int I_IMPLEMENTS = 121;
    public static final int I_LABEL = 122;
    public static final int I_LINE = 123;
    public static final int I_LOCAL = 124;
    public static final int I_LOCALS = 125;
    public static final int I_METHOD = 126;
    public static final int I_METHODS = 127;
    public static final int I_METHOD_PROTOTYPE = 128;
    public static final int I_METHOD_RETURN_TYPE = 129;
    public static final int I_ORDERED_METHOD_ITEMS = 130;
    public static final int I_PACKED_SWITCH_ELEMENTS = 131;
    public static final int I_PACKED_SWITCH_START_KEY = 132;
    public static final int I_PARAMETER = 133;
    public static final int I_PARAMETERS = 134;
    public static final int I_PARAMETER_NOT_SPECIFIED = 135;
    public static final int I_PROLOGUE = 136;
    public static final int I_REGISTERS = 137;
    public static final int I_REGISTER_LIST = 138;
    public static final int I_REGISTER_RANGE = 139;
    public static final int I_RESTART_LOCAL = 140;
    public static final int I_SOURCE = 141;
    public static final int I_SPARSE_SWITCH_ELEMENTS = 142;
    public static final int I_STATEMENT_ARRAY_DATA = 143;
    public static final int I_STATEMENT_FORMAT10t = 144;
    public static final int I_STATEMENT_FORMAT10x = 145;
    public static final int I_STATEMENT_FORMAT11n = 146;
    public static final int I_STATEMENT_FORMAT11x = 147;
    public static final int I_STATEMENT_FORMAT12x = 148;
    public static final int I_STATEMENT_FORMAT20bc = 149;
    public static final int I_STATEMENT_FORMAT20t = 150;
    public static final int I_STATEMENT_FORMAT21c_FIELD = 151;
    public static final int I_STATEMENT_FORMAT21c_METHOD_HANDLE = 152;
    public static final int I_STATEMENT_FORMAT21c_METHOD_TYPE = 153;
    public static final int I_STATEMENT_FORMAT21c_STRING = 154;
    public static final int I_STATEMENT_FORMAT21c_TYPE = 155;
    public static final int I_STATEMENT_FORMAT21ih = 156;
    public static final int I_STATEMENT_FORMAT21lh = 157;
    public static final int I_STATEMENT_FORMAT21s = 158;
    public static final int I_STATEMENT_FORMAT21t = 159;
    public static final int I_STATEMENT_FORMAT22b = 160;
    public static final int I_STATEMENT_FORMAT22c_FIELD = 161;
    public static final int I_STATEMENT_FORMAT22c_TYPE = 162;
    public static final int I_STATEMENT_FORMAT22s = 163;
    public static final int I_STATEMENT_FORMAT22t = 164;
    public static final int I_STATEMENT_FORMAT22x = 165;
    public static final int I_STATEMENT_FORMAT23x = 166;
    public static final int I_STATEMENT_FORMAT30t = 167;
    public static final int I_STATEMENT_FORMAT31c = 168;
    public static final int I_STATEMENT_FORMAT31i = 169;
    public static final int I_STATEMENT_FORMAT31t = 170;
    public static final int I_STATEMENT_FORMAT32x = 171;
    public static final int I_STATEMENT_FORMAT35c_CALL_SITE = 172;
    public static final int I_STATEMENT_FORMAT35c_METHOD = 173;
    public static final int I_STATEMENT_FORMAT35c_TYPE = 174;
    public static final int I_STATEMENT_FORMAT3rc_CALL_SITE = 175;
    public static final int I_STATEMENT_FORMAT3rc_METHOD = 176;
    public static final int I_STATEMENT_FORMAT3rc_TYPE = 177;
    public static final int I_STATEMENT_FORMAT45cc_METHOD = 178;
    public static final int I_STATEMENT_FORMAT4rcc_METHOD = 179;
    public static final int I_STATEMENT_FORMAT51l = 180;
    public static final int I_STATEMENT_PACKED_SWITCH = 181;
    public static final int I_STATEMENT_SPARSE_SWITCH = 182;
    public static final int I_SUBANNOTATION = 183;
    public static final int I_SUPER = 184;
    public static final int LINE_COMMENT = 185;
    public static final int LINE_DIRECTIVE = 186;
    public static final int LOCALS_DIRECTIVE = 187;
    public static final int LOCAL_DIRECTIVE = 188;
    public static final int LONG_LITERAL = 189;
    public static final int MEMBER_NAME = 190;
    public static final int METHOD_DIRECTIVE = 191;
    public static final int METHOD_HANDLE_TYPE_FIELD = 192;
    public static final int METHOD_HANDLE_TYPE_METHOD = 193;
    public static final int NEGATIVE_INTEGER_LITERAL = 194;
    public static final int NULL_LITERAL = 195;
    public static final int OPEN_BRACE = 196;
    public static final int OPEN_PAREN = 197;
    public static final int PACKED_SWITCH_DIRECTIVE = 198;
    public static final int PARAMETER_DIRECTIVE = 199;
    public static final int PARAM_LIST_OR_ID_PRIMITIVE_TYPE = 200;
    public static final int POSITIVE_INTEGER_LITERAL = 201;
    public static final int PRIMITIVE_TYPE = 202;
    public static final int PROLOGUE_DIRECTIVE = 203;
    public static final int REGISTER = 204;
    public static final int REGISTERS_DIRECTIVE = 205;
    public static final int RESTART_LOCAL_DIRECTIVE = 206;
    public static final int SHORT_LITERAL = 207;
    public static final int SIMPLE_NAME = 208;
    public static final int SOURCE_DIRECTIVE = 209;
    public static final int SPARSE_SWITCH_DIRECTIVE = 210;
    public static final int STRING_LITERAL = 211;
    public static final int SUBANNOTATION_DIRECTIVE = 212;
    public static final int SUPER_DIRECTIVE = 213;
    public static final int VERIFICATION_ERROR_TYPE = 214;
    public static final int VOID_TYPE = 215;
    public static final int VTABLE_INDEX = 216;
    public static final int WHITE_SPACE = 217;
    public String classType;
    private boolean verboseErrors;
    private int apiLevel;
    private Opcodes opcodes;
    private DexBuilder dexBuilder;
    private int callSiteNameIndex;
    protected Stack<method_scope> method_stack;
    public static final BitSet FOLLOW_I_CLASS_DEF_in_smali_file52 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_header_in_smali_file54 = new BitSet(new long[]{0L, Long.MIN_VALUE});
    public static final BitSet FOLLOW_methods_in_smali_file56 = new BitSet(new long[]{0L, 18014398509481984L});
    public static final BitSet FOLLOW_fields_in_smali_file58 = new BitSet(new long[]{0L, 68719476736L});
    public static final BitSet FOLLOW_annotations_in_smali_file60 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_class_spec_in_header85 = new BitSet(new long[]{0L, 144115188075855872L, 72057594037936128L});
    public static final BitSet FOLLOW_super_spec_in_header87 = new BitSet(new long[]{0L, 144115188075855872L, 8192L});
    public static final BitSet FOLLOW_implements_list_in_header90 = new BitSet(new long[]{0L, 0L, 8192L});
    public static final BitSet FOLLOW_source_spec_in_header92 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_class_spec110 = new BitSet(new long[]{0L, 8589934592L});
    public static final BitSet FOLLOW_access_list_in_class_spec112 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_I_SUPER_in_super_spec130 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_super_spec132 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_IMPLEMENTS_in_implements_spec152 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_implements_spec154 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_implements_spec_in_implements_list184 = new BitSet(new long[]{2L, 144115188075855872L});
    public static final BitSet FOLLOW_I_SOURCE_in_source_spec213 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_string_literal_in_source_spec215 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_ACCESS_LIST_in_access_list247 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_ACCESS_SPEC_in_access_list265 = new BitSet(new long[]{24L});
    public static final BitSet FOLLOW_I_ACCESS_OR_RESTRICTION_LIST_in_access_or_restriction_list308 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_ACCESS_SPEC_in_access_or_restriction_list326 = new BitSet(new long[]{2199023255576L});
    public static final BitSet FOLLOW_HIDDENAPI_RESTRICTION_in_access_or_restriction_list356 = new BitSet(new long[]{2199023255576L});
    public static final BitSet FOLLOW_I_FIELDS_in_fields405 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_field_in_fields414 = new BitSet(new long[]{8L, 9007199254740992L});
    public static final BitSet FOLLOW_I_METHODS_in_methods446 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_method_in_methods455 = new BitSet(new long[]{8L, 4611686018427387904L});
    public static final BitSet FOLLOW_I_FIELD_in_field480 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_SIMPLE_NAME_in_field482 = new BitSet(new long[]{0L, 17179869184L});
    public static final BitSet FOLLOW_access_or_restriction_list_in_field484 = new BitSet(new long[]{0L, 72057594037927936L});
    public static final BitSet FOLLOW_I_FIELD_TYPE_in_field487 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_nonvoid_type_descriptor_in_field489 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_field_initial_value_in_field492 = new BitSet(new long[]{8L, 68719476736L});
    public static final BitSet FOLLOW_annotations_in_field494 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_FIELD_INITIAL_VALUE_in_field_initial_value515 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_literal_in_field_initial_value517 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_integer_literal_in_literal539 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_long_literal_in_literal547 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_short_literal_in_literal555 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_byte_literal_in_literal563 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_float_literal_in_literal571 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_double_literal_in_literal579 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_char_literal_in_literal587 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_string_literal_in_literal595 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_bool_literal_in_literal603 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_NULL_LITERAL_in_literal611 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_type_descriptor_in_literal619 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_array_literal_in_literal627 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_subannotation_in_literal635 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_field_literal_in_literal643 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_method_literal_in_literal651 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_enum_literal_in_literal659 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_method_handle_literal_in_literal667 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_method_prototype_in_literal675 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_integer_literal_in_fixed_64bit_literal_number691 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_long_literal_in_fixed_64bit_literal_number699 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_short_literal_in_fixed_64bit_literal_number707 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_byte_literal_in_fixed_64bit_literal_number715 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_float_literal_in_fixed_64bit_literal_number723 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_double_literal_in_fixed_64bit_literal_number731 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_char_literal_in_fixed_64bit_literal_number739 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_bool_literal_in_fixed_64bit_literal_number747 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_integer_literal_in_fixed_64bit_literal762 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_long_literal_in_fixed_64bit_literal770 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_short_literal_in_fixed_64bit_literal778 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_byte_literal_in_fixed_64bit_literal786 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_float_literal_in_fixed_64bit_literal794 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_double_literal_in_fixed_64bit_literal802 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_char_literal_in_fixed_64bit_literal810 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_bool_literal_in_fixed_64bit_literal818 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_integer_literal_in_fixed_32bit_literal835 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_long_literal_in_fixed_32bit_literal843 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_short_literal_in_fixed_32bit_literal851 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_byte_literal_in_fixed_32bit_literal859 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_float_literal_in_fixed_32bit_literal867 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_char_literal_in_fixed_32bit_literal875 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_bool_literal_in_fixed_32bit_literal883 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_I_ARRAY_ELEMENTS_in_array_elements905 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_fixed_64bit_literal_number_in_array_elements914 = new BitSet(new long[]{549764241416L, 2147483648L, 2305843009213693952L, 32768L});
    public static final BitSet FOLLOW_I_PACKED_SWITCH_ELEMENTS_in_packed_switch_elements950 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_label_ref_in_packed_switch_elements959 = new BitSet(new long[]{8L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_I_SPARSE_SWITCH_ELEMENTS_in_sparse_switch_elements994 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_fixed_32bit_literal_in_sparse_switch_elements1004 = new BitSet(new long[]{0L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_label_ref_in_sparse_switch_elements1006 = new BitSet(new long[]{549755852808L, 2147483648L, 2305843009213693952L, 32768L});
    public static final BitSet FOLLOW_I_METHOD_in_method1058 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_method_name_and_prototype_in_method1066 = new BitSet(new long[]{0L, 17179869184L});
    public static final BitSet FOLLOW_access_or_restriction_list_in_method1074 = new BitSet(new long[]{0L, 2305843009213693952L, 516L});
    public static final BitSet FOLLOW_registers_directive_in_method1101 = new BitSet(new long[]{0L, 0L, 4L});
    public static final BitSet FOLLOW_ordered_method_items_in_method1158 = new BitSet(new long[]{0L, 17592186044416L});
    public static final BitSet FOLLOW_catches_in_method1166 = new BitSet(new long[]{0L, 0L, 64L});
    public static final BitSet FOLLOW_parameters_in_method1174 = new BitSet(new long[]{0L, 68719476736L});
    public static final BitSet FOLLOW_annotations_in_method1183 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_METHOD_PROTOTYPE_in_method_prototype1207 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_I_METHOD_RETURN_TYPE_in_method_prototype1210 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_type_descriptor_in_method_prototype1212 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_method_type_list_in_method_prototype1215 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_SIMPLE_NAME_in_method_name_and_prototype1233 = new BitSet(new long[]{0L, 0L, 1L});
    public static final BitSet FOLLOW_method_prototype_in_method_name_and_prototype1235 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_nonvoid_type_descriptor_in_method_type_list1269 = new BitSet(new long[]{65794L, 0L, 0L, 1024L});
    public static final BitSet FOLLOW_I_CALL_SITE_REFERENCE_in_call_site_reference1300 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_SIMPLE_NAME_in_call_site_reference1304 = new BitSet(new long[]{0L, 0L, 0L, 524288L});
    public static final BitSet FOLLOW_string_literal_in_call_site_reference1308 = new BitSet(new long[]{0L, 0L, 1L});
    public static final BitSet FOLLOW_method_prototype_in_call_site_reference1310 = new BitSet(new long[]{0L, 1099511627776L});
    public static final BitSet FOLLOW_call_site_extra_arguments_in_call_site_reference1320 = new BitSet(new long[]{65792L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_method_reference_in_call_site_reference1322 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_set_in_method_handle_type1342 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_method_handle_type_in_method_handle_reference1367 = new BitSet(new long[]{65792L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_field_reference_in_method_handle_reference1370 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_method_reference_in_method_handle_reference1374 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_I_ENCODED_METHOD_HANDLE_in_method_handle_literal1391 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_method_handle_reference_in_method_handle_literal1393 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_reference_type_descriptor_in_method_reference1409 = new BitSet(new long[]{0L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_SIMPLE_NAME_in_method_reference1412 = new BitSet(new long[]{0L, 0L, 1L});
    public static final BitSet FOLLOW_method_prototype_in_method_reference1414 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_reference_type_descriptor_in_field_reference1431 = new BitSet(new long[]{0L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_SIMPLE_NAME_in_field_reference1434 = new BitSet(new long[]{65792L, 0L, 0L, 1024L});
    public static final BitSet FOLLOW_nonvoid_type_descriptor_in_field_reference1436 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_I_REGISTERS_in_registers_directive1462 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_I_LOCALS_in_registers_directive1474 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_short_integral_literal_in_registers_directive1492 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_LABEL_in_label_def1512 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_SIMPLE_NAME_in_label_def1514 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_CATCHES_in_catches1540 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_catch_directive_in_catches1542 = new BitSet(new long[]{8L, 13194139533312L});
    public static final BitSet FOLLOW_catchall_directive_in_catches1545 = new BitSet(new long[]{8L, 8796093022208L});
    public static final BitSet FOLLOW_I_CATCH_in_catch_directive1558 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_nonvoid_type_descriptor_in_catch_directive1560 = new BitSet(new long[]{0L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_label_ref_in_catch_directive1564 = new BitSet(new long[]{0L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_label_ref_in_catch_directive1568 = new BitSet(new long[]{0L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_label_ref_in_catch_directive1572 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_CATCHALL_in_catchall_directive1588 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_label_ref_in_catchall_directive1592 = new BitSet(new long[]{0L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_label_ref_in_catchall_directive1596 = new BitSet(new long[]{0L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_label_ref_in_catchall_directive1600 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_PARAMETERS_in_parameters1617 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_parameter_in_parameters1620 = new BitSet(new long[]{8L, 0L, 32L});
    public static final BitSet FOLLOW_I_PARAMETER_in_parameter1636 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_REGISTER_in_parameter1638 = new BitSet(new long[]{0L, 68719476736L, 0L, 524288L});
    public static final BitSet FOLLOW_string_literal_in_parameter1640 = new BitSet(new long[]{0L, 68719476736L});
    public static final BitSet FOLLOW_annotations_in_parameter1643 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_line_in_debug_directive1660 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_local_in_debug_directive1666 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_end_local_in_debug_directive1672 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_restart_local_in_debug_directive1678 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_prologue_in_debug_directive1684 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_epilogue_in_debug_directive1690 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_source_in_debug_directive1696 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_I_LINE_in_line1707 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_integral_literal_in_line1709 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_LOCAL_in_local1727 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_REGISTER_in_local1729 = new BitSet(new long[]{8L, 0L, 0L, 524296L});
    public static final BitSet FOLLOW_NULL_LITERAL_in_local1733 = new BitSet(new long[]{65800L, 0L, 0L, 525312L});
    public static final BitSet FOLLOW_string_literal_in_local1739 = new BitSet(new long[]{65800L, 0L, 0L, 525312L});
    public static final BitSet FOLLOW_nonvoid_type_descriptor_in_local1742 = new BitSet(new long[]{8L, 0L, 0L, 524288L});
    public static final BitSet FOLLOW_string_literal_in_local1747 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_END_LOCAL_in_end_local1768 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_REGISTER_in_end_local1770 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_RESTART_LOCAL_in_restart_local1788 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_REGISTER_in_restart_local1790 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_PROLOGUE_in_prologue1807 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_I_EPILOGUE_in_epilogue1823 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_I_SOURCE_in_source1840 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_string_literal_in_source1842 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_CALL_SITE_EXTRA_ARGUMENTS_in_call_site_extra_arguments1868 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_literal_in_call_site_extra_arguments1871 = new BitSet(new long[]{549764307208L, 2181433216991232L, 2341871806232657921L, 8946696L});
    public static final BitSet FOLLOW_I_ORDERED_METHOD_ITEMS_in_ordered_method_items1887 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_label_def_in_ordered_method_items1890 = new BitSet(new long[]{8L, 2024368032503037952L, 36028797018943744L});
    public static final BitSet FOLLOW_instruction_in_ordered_method_items1894 = new BitSet(new long[]{8L, 2024368032503037952L, 36028797018943744L});
    public static final BitSet FOLLOW_debug_directive_in_ordered_method_items1898 = new BitSet(new long[]{8L, 2024368032503037952L, 36028797018943744L});
    public static final BitSet FOLLOW_SIMPLE_NAME_in_label_ref1914 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_I_REGISTER_LIST_in_register_list1939 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_REGISTER_in_register_list1948 = new BitSet(new long[]{8L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_I_REGISTER_RANGE_in_register_range1973 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_REGISTER_in_register_range1978 = new BitSet(new long[]{8L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_register_range1982 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_verification_error_reference2005 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_field_reference_in_verification_error_reference2015 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_method_reference_in_verification_error_reference2025 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_VERIFICATION_ERROR_TYPE_in_verification_error_type2042 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format10t_in_instruction2056 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format10x_in_instruction2062 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format11n_in_instruction2068 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format11x_in_instruction2074 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format12x_in_instruction2080 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format20bc_in_instruction2086 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format20t_in_instruction2092 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format21c_field_in_instruction2098 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format21c_method_handle_in_instruction2104 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format21c_method_type_in_instruction2110 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format21c_string_in_instruction2116 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format21c_type_in_instruction2122 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format21ih_in_instruction2128 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format21lh_in_instruction2134 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format21s_in_instruction2140 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format21t_in_instruction2146 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format22b_in_instruction2152 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format22c_field_in_instruction2158 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format22c_type_in_instruction2164 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format22s_in_instruction2170 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format22t_in_instruction2176 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format22x_in_instruction2182 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format23x_in_instruction2188 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format30t_in_instruction2194 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format31c_in_instruction2200 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format31i_in_instruction2206 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format31t_in_instruction2212 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format32x_in_instruction2218 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format35c_call_site_in_instruction2224 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format35c_method_in_instruction2230 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format35c_type_in_instruction2236 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format3rc_call_site_in_instruction2242 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format3rc_method_in_instruction2248 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format3rc_type_in_instruction2254 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format45cc_method_in_instruction2260 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format4rcc_method_in_instruction2266 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_format51l_type_in_instruction2272 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_array_data_directive_in_instruction2278 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_packed_switch_directive_in_instruction2284 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_insn_sparse_switch_directive_in_instruction2290 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT10t_in_insn_format10t2314 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT10t_in_insn_format10t2316 = new BitSet(new long[]{0L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_label_ref_in_insn_format10t2318 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT10x_in_insn_format10x2341 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT10x_in_insn_format10x2343 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT11n_in_insn_format11n2366 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT11n_in_insn_format11n2368 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format11n2370 = new BitSet(new long[]{36864L, 2147483648L, 2305843009213693952L, 32768L});
    public static final BitSet FOLLOW_short_integral_literal_in_insn_format11n2372 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT11x_in_insn_format11x2395 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT11x_in_insn_format11x2397 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format11x2399 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT12x_in_insn_format12x2422 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT12x_in_insn_format12x2424 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format12x2428 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format12x2432 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT20bc_in_insn_format20bc2455 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT20bc_in_insn_format20bc2457 = new BitSet(new long[]{0L, 0L, 0L, 4194304L});
    public static final BitSet FOLLOW_verification_error_type_in_insn_format20bc2459 = new BitSet(new long[]{65792L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_verification_error_reference_in_insn_format20bc2461 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT20t_in_insn_format20t2484 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT20t_in_insn_format20t2486 = new BitSet(new long[]{0L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_label_ref_in_insn_format20t2488 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT21c_FIELD_in_insn_format21c_field2511 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_set_in_insn_format21c_field2515 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format21c_field2523 = new BitSet(new long[]{65792L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_field_reference_in_insn_format21c_field2525 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT21c_METHOD_HANDLE_in_insn_format21c_method_handle2548 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_METHOD_HANDLE_in_insn_format21c_method_handle2553 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format21c_method_handle2556 = new BitSet(new long[]{0L, 262144L, 0L, 3L});
    public static final BitSet FOLLOW_method_handle_reference_in_insn_format21c_method_handle2558 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT21c_METHOD_TYPE_in_insn_format21c_method_type2581 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_METHOD_TYPE_in_insn_format21c_method_type2586 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format21c_method_type2589 = new BitSet(new long[]{0L, 0L, 1L});
    public static final BitSet FOLLOW_method_prototype_in_insn_format21c_method_type2591 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT21c_STRING_in_insn_format21c_string2614 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_STRING_in_insn_format21c_string2616 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format21c_string2618 = new BitSet(new long[]{0L, 0L, 0L, 524288L});
    public static final BitSet FOLLOW_string_literal_in_insn_format21c_string2620 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT21c_TYPE_in_insn_format21c_type2643 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT21c_TYPE_in_insn_format21c_type2645 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format21c_type2647 = new BitSet(new long[]{65792L, 0L, 0L, 1024L});
    public static final BitSet FOLLOW_nonvoid_type_descriptor_in_insn_format21c_type2649 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT21ih_in_insn_format21ih2672 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT21ih_in_insn_format21ih2674 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format21ih2676 = new BitSet(new long[]{549755852800L, 2147483648L, 2305843009213693952L, 32768L});
    public static final BitSet FOLLOW_fixed_32bit_literal_in_insn_format21ih2678 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT21lh_in_insn_format21lh2701 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT21lh_in_insn_format21lh2703 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format21lh2705 = new BitSet(new long[]{549764241408L, 2147483648L, 2305843009213693952L, 32768L});
    public static final BitSet FOLLOW_fixed_64bit_literal_in_insn_format21lh2707 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT21s_in_insn_format21s2730 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT21s_in_insn_format21s2732 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format21s2734 = new BitSet(new long[]{36864L, 2147483648L, 2305843009213693952L, 32768L});
    public static final BitSet FOLLOW_short_integral_literal_in_insn_format21s2736 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT21t_in_insn_format21t2759 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT21t_in_insn_format21t2761 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format21t2763 = new BitSet(new long[]{0L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_label_ref_in_insn_format21t2765 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT22b_in_insn_format22b2788 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT22b_in_insn_format22b2790 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format22b2794 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format22b2798 = new BitSet(new long[]{36864L, 2147483648L, 2305843009213693952L, 32768L});
    public static final BitSet FOLLOW_short_integral_literal_in_insn_format22b2800 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT22c_FIELD_in_insn_format22c_field2823 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_set_in_insn_format22c_field2827 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format22c_field2837 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format22c_field2841 = new BitSet(new long[]{65792L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_field_reference_in_insn_format22c_field2843 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT22c_TYPE_in_insn_format22c_type2866 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT22c_TYPE_in_insn_format22c_type2868 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format22c_type2872 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format22c_type2876 = new BitSet(new long[]{65792L, 0L, 0L, 1024L});
    public static final BitSet FOLLOW_nonvoid_type_descriptor_in_insn_format22c_type2878 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT22s_in_insn_format22s2901 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT22s_in_insn_format22s2903 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format22s2907 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format22s2911 = new BitSet(new long[]{36864L, 2147483648L, 2305843009213693952L, 32768L});
    public static final BitSet FOLLOW_short_integral_literal_in_insn_format22s2913 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT22t_in_insn_format22t2936 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT22t_in_insn_format22t2938 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format22t2942 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format22t2946 = new BitSet(new long[]{0L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_label_ref_in_insn_format22t2948 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT22x_in_insn_format22x2971 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT22x_in_insn_format22x2973 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format22x2977 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format22x2981 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT23x_in_insn_format23x3004 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT23x_in_insn_format23x3006 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format23x3010 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format23x3014 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format23x3018 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT30t_in_insn_format30t3041 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT30t_in_insn_format30t3043 = new BitSet(new long[]{0L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_label_ref_in_insn_format30t3045 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT31c_in_insn_format31c3068 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT31c_in_insn_format31c3070 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format31c3072 = new BitSet(new long[]{0L, 0L, 0L, 524288L});
    public static final BitSet FOLLOW_string_literal_in_insn_format31c3074 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT31i_in_insn_format31i3097 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT31i_in_insn_format31i3099 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format31i3101 = new BitSet(new long[]{549755852800L, 2147483648L, 2305843009213693952L, 32768L});
    public static final BitSet FOLLOW_fixed_32bit_literal_in_insn_format31i3103 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT31t_in_insn_format31t3126 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT31t_in_insn_format31t3128 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format31t3130 = new BitSet(new long[]{0L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_label_ref_in_insn_format31t3132 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT32x_in_insn_format32x3155 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT32x_in_insn_format32x3157 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format32x3161 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format32x3165 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT35c_CALL_SITE_in_insn_format35c_call_site3193 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_CALL_SITE_in_insn_format35c_call_site3195 = new BitSet(new long[]{0L, 0L, 1024L});
    public static final BitSet FOLLOW_register_list_in_insn_format35c_call_site3197 = new BitSet(new long[]{0L, 2199023255552L});
    public static final BitSet FOLLOW_call_site_reference_in_insn_format35c_call_site3199 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT35c_METHOD_in_insn_format35c_method3222 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_METHOD_in_insn_format35c_method3224 = new BitSet(new long[]{0L, 0L, 1024L});
    public static final BitSet FOLLOW_register_list_in_insn_format35c_method3226 = new BitSet(new long[]{65792L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_method_reference_in_insn_format35c_method3228 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT35c_TYPE_in_insn_format35c_type3251 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT35c_TYPE_in_insn_format35c_type3253 = new BitSet(new long[]{0L, 0L, 1024L});
    public static final BitSet FOLLOW_register_list_in_insn_format35c_type3255 = new BitSet(new long[]{65792L, 0L, 0L, 1024L});
    public static final BitSet FOLLOW_nonvoid_type_descriptor_in_insn_format35c_type3257 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT3rc_CALL_SITE_in_insn_format3rc_call_site3285 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rc_CALL_SITE_in_insn_format3rc_call_site3287 = new BitSet(new long[]{0L, 0L, 2048L});
    public static final BitSet FOLLOW_register_range_in_insn_format3rc_call_site3289 = new BitSet(new long[]{0L, 2199023255552L});
    public static final BitSet FOLLOW_call_site_reference_in_insn_format3rc_call_site3291 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT3rc_METHOD_in_insn_format3rc_method3314 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rc_METHOD_in_insn_format3rc_method3316 = new BitSet(new long[]{0L, 0L, 2048L});
    public static final BitSet FOLLOW_register_range_in_insn_format3rc_method3318 = new BitSet(new long[]{65792L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_method_reference_in_insn_format3rc_method3320 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT3rc_TYPE_in_insn_format3rc_type3343 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT3rc_TYPE_in_insn_format3rc_type3345 = new BitSet(new long[]{0L, 0L, 2048L});
    public static final BitSet FOLLOW_register_range_in_insn_format3rc_type3347 = new BitSet(new long[]{65792L, 0L, 0L, 1024L});
    public static final BitSet FOLLOW_nonvoid_type_descriptor_in_insn_format3rc_type3349 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT45cc_METHOD_in_insn_format45cc_method3372 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT45cc_METHOD_in_insn_format45cc_method3374 = new BitSet(new long[]{0L, 0L, 1024L});
    public static final BitSet FOLLOW_register_list_in_insn_format45cc_method3376 = new BitSet(new long[]{65792L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_method_reference_in_insn_format45cc_method3378 = new BitSet(new long[]{0L, 0L, 1L});
    public static final BitSet FOLLOW_method_prototype_in_insn_format45cc_method3380 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT4rcc_METHOD_in_insn_format4rcc_method3403 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT4rcc_METHOD_in_insn_format4rcc_method3405 = new BitSet(new long[]{0L, 0L, 2048L});
    public static final BitSet FOLLOW_register_range_in_insn_format4rcc_method3407 = new BitSet(new long[]{65792L, 0L, 0L, 65536L});
    public static final BitSet FOLLOW_method_reference_in_insn_format4rcc_method3409 = new BitSet(new long[]{0L, 0L, 1L});
    public static final BitSet FOLLOW_method_prototype_in_insn_format4rcc_method3411 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_FORMAT51l_in_insn_format51l_type3434 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_INSTRUCTION_FORMAT51l_in_insn_format51l_type3436 = new BitSet(new long[]{0L, 0L, 0L, 4096L});
    public static final BitSet FOLLOW_REGISTER_in_insn_format51l_type3438 = new BitSet(new long[]{549764241408L, 2147483648L, 2305843009213693952L, 32768L});
    public static final BitSet FOLLOW_fixed_64bit_literal_in_insn_format51l_type3440 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_ARRAY_DATA_in_insn_array_data_directive3463 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_I_ARRAY_ELEMENT_SIZE_in_insn_array_data_directive3466 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_short_integral_literal_in_insn_array_data_directive3468 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_array_elements_in_insn_array_data_directive3471 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_PACKED_SWITCH_in_insn_packed_switch_directive3493 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_I_PACKED_SWITCH_START_KEY_in_insn_packed_switch_directive3496 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_fixed_32bit_literal_in_insn_packed_switch_directive3498 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_packed_switch_elements_in_insn_packed_switch_directive3501 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_STATEMENT_SPARSE_SWITCH_in_insn_sparse_switch_directive3525 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_sparse_switch_elements_in_insn_sparse_switch_directive3527 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_ARRAY_TYPE_PREFIX_in_array_descriptor3548 = new BitSet(new long[]{65536L, 0L, 0L, 1024L});
    public static final BitSet FOLLOW_PRIMITIVE_TYPE_in_array_descriptor3552 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_array_descriptor3580 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_PRIMITIVE_TYPE_in_nonvoid_type_descriptor3598 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_nonvoid_type_descriptor3606 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_array_descriptor_in_nonvoid_type_descriptor3614 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_reference_type_descriptor3635 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_array_descriptor_in_reference_type_descriptor3643 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_VOID_TYPE_in_type_descriptor3663 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_nonvoid_type_descriptor_in_type_descriptor3671 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_long_literal_in_short_integral_literal3689 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_integer_literal_in_short_integral_literal3701 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_short_literal_in_short_integral_literal3713 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_char_literal_in_short_integral_literal3721 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_byte_literal_in_short_integral_literal3729 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_long_literal_in_integral_literal3744 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_integer_literal_in_integral_literal3756 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_short_literal_in_integral_literal3764 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_byte_literal_in_integral_literal3772 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_INTEGER_LITERAL_in_integer_literal3788 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_LONG_LITERAL_in_long_literal3803 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_SHORT_LITERAL_in_short_literal3818 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_BYTE_LITERAL_in_byte_literal3833 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_FLOAT_LITERAL_in_float_literal3848 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_DOUBLE_LITERAL_in_double_literal3863 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_CHAR_LITERAL_in_char_literal3878 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_STRING_LITERAL_in_string_literal3893 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_BOOL_LITERAL_in_bool_literal3912 = new BitSet(new long[]{2L});
    public static final BitSet FOLLOW_I_ENCODED_ARRAY_in_array_literal3934 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_literal_in_array_literal3937 = new BitSet(new long[]{549764307208L, 2181433216991232L, 2341871806232657921L, 8946696L});
    public static final BitSet FOLLOW_I_ANNOTATIONS_in_annotations3962 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_annotation_in_annotations3965 = new BitSet(new long[]{8L, 34359738368L});
    public static final BitSet FOLLOW_I_ANNOTATION_in_annotation3994 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_ANNOTATION_VISIBILITY_in_annotation3996 = new BitSet(new long[]{0L, 0L, 36028797018963968L});
    public static final BitSet FOLLOW_subannotation_in_annotation3998 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_ANNOTATION_ELEMENT_in_annotation_element4019 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_SIMPLE_NAME_in_annotation_element4021 = new BitSet(new long[]{549764307200L, 2181433216991232L, 2341871806232657921L, 8946696L});
    public static final BitSet FOLLOW_literal_in_annotation_element4023 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_SUBANNOTATION_in_subannotation4050 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_CLASS_DESCRIPTOR_in_subannotation4060 = new BitSet(new long[]{8L, 137438953472L});
    public static final BitSet FOLLOW_annotation_element_in_subannotation4071 = new BitSet(new long[]{8L, 137438953472L});
    public static final BitSet FOLLOW_I_ENCODED_FIELD_in_field_literal4110 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_field_reference_in_field_literal4112 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_ENCODED_METHOD_in_method_literal4133 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_method_reference_in_method_literal4135 = new BitSet(new long[]{8L});
    public static final BitSet FOLLOW_I_ENCODED_ENUM_in_enum_literal4156 = new BitSet(new long[]{4L});
    public static final BitSet FOLLOW_field_reference_in_enum_literal4158 = new BitSet(new long[]{8L});

    public TreeParser[] getDelegates() {
        return new TreeParser[0];
    }

    public smaliTreeWalker(TreeNodeStream input) {
        this(input, new RecognizerSharedState());
    }

    public smaliTreeWalker(TreeNodeStream input, RecognizerSharedState state) {
        super(input, state);
        this.verboseErrors = false;
        this.apiLevel = 15;
        this.opcodes = Opcodes.forApi(this.apiLevel);
        this.callSiteNameIndex = 0;
        this.method_stack = new Stack();
    }

    public String[] getTokenNames() {
        return tokenNames;
    }

    public String getGrammarFileName() {
        return "smaliTreeWalker.g";
    }

    public void setDexBuilder(DexBuilder dexBuilder) {
        this.dexBuilder = dexBuilder;
    }

    public void setApiLevel(int apiLevel) {
        this.opcodes = Opcodes.forApi(apiLevel);
        this.apiLevel = apiLevel;
    }

    public void setVerboseErrors(boolean verboseErrors) {
        this.verboseErrors = verboseErrors;
    }

    private byte parseRegister_nibble(String register) throws SemanticException {
        int totalMethodRegisters = ((method_scope)this.method_stack.peek()).totalMethodRegisters;
        int methodParameterRegisters = ((method_scope)this.method_stack.peek()).methodParameterRegisters;
        int val = Byte.parseByte(register.substring(1));
        if (register.charAt(0) == 'p') {
            val += totalMethodRegisters - methodParameterRegisters;
        }

        if (val >= 32) {
            throw new SemanticException(this.input, "The maximum allowed register in this context is list of registers is v15", new Object[0]);
        } else {
            return (byte)val;
        }
    }

    private short parseRegister_byte(String register) throws SemanticException {
        int totalMethodRegisters = ((method_scope)this.method_stack.peek()).totalMethodRegisters;
        int methodParameterRegisters = ((method_scope)this.method_stack.peek()).methodParameterRegisters;
        int val = Short.parseShort(register.substring(1));
        if (register.charAt(0) == 'p') {
            val += totalMethodRegisters - methodParameterRegisters;
        }

        if (val >= 512) {
            throw new SemanticException(this.input, "The maximum allowed register in this context is v255", new Object[0]);
        } else {
            return (short)val;
        }
    }

    private int parseRegister_short(String register) throws SemanticException {
        int totalMethodRegisters = ((method_scope)this.method_stack.peek()).totalMethodRegisters;
        int methodParameterRegisters = ((method_scope)this.method_stack.peek()).methodParameterRegisters;
        int val = Integer.parseInt(register.substring(1));
        if (register.charAt(0) == 'p') {
            val += totalMethodRegisters - methodParameterRegisters;
        }

        if (val >= 131072) {
            throw new SemanticException(this.input, "The maximum allowed register in this context is v65535", new Object[0]);
        } else {
            return val;
        }
    }

    public String getErrorMessage(RecognitionException e, String[] tokenNames) {
        return e instanceof SemanticException ? e.getMessage() : super.getErrorMessage(e, tokenNames);
    }

    public String getErrorHeader(RecognitionException e) {
        return this.getSourceName() + "[" + e.line + "," + e.charPositionInLine + "]";
    }

    public final ClassDef smali_file() throws RecognitionException {
        ClassDef classDef = null;
        TreeRuleReturnScope header1 = null;
        Set<Annotation> annotations2 = null;
        List<BuilderField> fields3 = null;
        List<BuilderMethod> methods4 = null;

        try {
            try {
                this.match(this.input, 109, FOLLOW_I_CLASS_DEF_in_smali_file52);
                this.match(this.input, 2, (BitSet)null);
                this.pushFollow(FOLLOW_header_in_smali_file54);
                header1 = this.header();
                --this.state._fsp;
                this.pushFollow(FOLLOW_methods_in_smali_file56);
                methods4 = this.methods();
                --this.state._fsp;
                this.pushFollow(FOLLOW_fields_in_smali_file58);
                fields3 = this.fields();
                --this.state._fsp;
                this.pushFollow(FOLLOW_annotations_in_smali_file60);
                annotations2 = this.annotations();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                classDef = this.dexBuilder.internClassDef(header1 != null ? ((header_return)header1).classType : null, header1 != null ? ((header_return)header1).accessFlags : 0, header1 != null ? ((header_return)header1).superType : null, header1 != null ? ((header_return)header1).implementsList : null, header1 != null ? ((header_return)header1).sourceSpec : null, annotations2, fields3, methods4);
            } catch (Exception var10) {
                Exception ex = var10;
                if (this.verboseErrors) {
                    ex.printStackTrace(System.err);
                }

                this.reportError(new SemanticException(this.input, ex));
            }

            return classDef;
        } finally {
            ;
        }
    }

    public final header_return header() throws RecognitionException {
        header_return retval = new header_return();
        retval.start = this.input.LT(1);
        TreeRuleReturnScope class_spec5 = null;
        String super_spec6 = null;
        List<String> implements_list7 = null;
        String source_spec8 = null;

        try {
            try {
                this.pushFollow(FOLLOW_class_spec_in_header85);
                class_spec5 = this.class_spec();
                --this.state._fsp;
                int alt1 = 2;
                int LA1_0 = this.input.LA(1);
                if (LA1_0 == 184) {
                    alt1 = 1;
                }

                switch (alt1) {
                    case 1:
                        this.pushFollow(FOLLOW_super_spec_in_header87);
                        super_spec6 = this.super_spec();
                        --this.state._fsp;
                    default:
                        this.pushFollow(FOLLOW_implements_list_in_header90);
                        implements_list7 = this.implements_list();
                        --this.state._fsp;
                        this.pushFollow(FOLLOW_source_spec_in_header92);
                        source_spec8 = this.source_spec();
                        --this.state._fsp;
                        this.classType = class_spec5 != null ? ((class_spec_return)class_spec5).type : null;
                        retval.classType = this.classType;
                        retval.accessFlags = class_spec5 != null ? ((class_spec_return)class_spec5).accessFlags : 0;
                        retval.superType = super_spec6;
                        retval.implementsList = implements_list7;
                        retval.sourceSpec = source_spec8;
                }
            } catch (RecognitionException var11) {
                RecognitionException re = var11;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return retval;
        } finally {
            ;
        }
    }

    public final class_spec_return class_spec() throws RecognitionException {
        class_spec_return retval = new class_spec_return();
        retval.start = this.input.LT(1);
        CommonTree CLASS_DESCRIPTOR9 = null;
        try {
            try {
                CLASS_DESCRIPTOR9 = (CommonTree)this.match(this.input, 16, FOLLOW_CLASS_DESCRIPTOR_in_class_spec110);
                this.pushFollow(FOLLOW_access_list_in_class_spec112);
                int access_list10 = this.access_list();
                --this.state._fsp;
                retval.type = CLASS_DESCRIPTOR9 != null ? CLASS_DESCRIPTOR9.getText() : null;
                retval.accessFlags = access_list10;
            } catch (RecognitionException var8) {
                RecognitionException re = var8;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return retval;
        } finally {
            ;
        }
    }

    public final String super_spec() throws RecognitionException {
        String type = null;
        CommonTree CLASS_DESCRIPTOR11 = null;

        try {
            try {
                this.match(this.input, 184, FOLLOW_I_SUPER_in_super_spec130);
                this.match(this.input, 2, (BitSet)null);
                CLASS_DESCRIPTOR11 = (CommonTree)this.match(this.input, 16, FOLLOW_CLASS_DESCRIPTOR_in_super_spec132);
                this.match(this.input, 3, (BitSet)null);
                type = CLASS_DESCRIPTOR11 != null ? CLASS_DESCRIPTOR11.getText() : null;
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return type;
        } finally {
            ;
        }
    }

    public final String implements_spec() throws RecognitionException {
        String type = null;
        CommonTree CLASS_DESCRIPTOR12 = null;

        try {
            try {
                this.match(this.input, 121, FOLLOW_I_IMPLEMENTS_in_implements_spec152);
                this.match(this.input, 2, (BitSet)null);
                CLASS_DESCRIPTOR12 = (CommonTree)this.match(this.input, 16, FOLLOW_CLASS_DESCRIPTOR_in_implements_spec154);
                this.match(this.input, 3, (BitSet)null);
                type = CLASS_DESCRIPTOR12 != null ? CLASS_DESCRIPTOR12.getText() : null;
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return type;
        } finally {
            ;
        }
    }

    public final List<String> implements_list() throws RecognitionException {
        List<String> implementsList = null;
        String implements_spec13 = null;

        try {
            List<String> typeList = Lists.newArrayList();

            while(true) {
                int alt2 = 2;
                int LA2_0 = this.input.LA(1);
                if (LA2_0 == 121) {
                    alt2 = 1;
                }

                switch (alt2) {
                    case 1:
                        this.pushFollow(FOLLOW_implements_spec_in_implements_list184);
                        implements_spec13 = this.implements_spec();
                        --this.state._fsp;
                        typeList.add(implements_spec13);
                        break;
                    default:
                        if (typeList.size() > 0) {
                            implementsList = typeList;
                        } else {
                            implementsList = null;
                        }

                        return implementsList;
                }
            }
        } catch (RecognitionException var9) {
            RecognitionException re = var9;
            this.reportError(re);
            this.recover(this.input, re);
            return implementsList;
        } finally {
            ;
        }
    }

    public final String source_spec() throws RecognitionException {
        String source = null;
        String string_literal14 = null;

        try {
            try {
                int alt3 = 0;
                int LA3_0 = this.input.LA(1);
                if (LA3_0 == 141) {
                    alt3 = 1;
                } else {
                    if (LA3_0 != 127) {
                        NoViableAltException nvae = new NoViableAltException("", 3, 0, this.input);
                        throw nvae;
                    }

                    alt3 = 2;
                }

                switch (alt3) {
                    case 1:
                        source = null;
                        this.match(this.input, 141, FOLLOW_I_SOURCE_in_source_spec213);
                        this.match(this.input, 2, (BitSet)null);
                        this.pushFollow(FOLLOW_string_literal_in_source_spec215);
                        string_literal14 = this.string_literal();
                        --this.state._fsp;
                        source = string_literal14;
                        this.match(this.input, 3, (BitSet)null);
                    case 2:
                }
            } catch (RecognitionException var9) {
                RecognitionException re = var9;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return source;
        } finally {
            ;
        }
    }

    public final int access_list() throws RecognitionException {
        int value = 0;
        CommonTree ACCESS_SPEC15 = null;

        try {
            try {
                this.match(this.input, 97, FOLLOW_I_ACCESS_LIST_in_access_list247);
                if (this.input.LA(1) == 2) {
                    this.match(this.input, 2, (BitSet)null);

                    while(true) {
                        int alt4 = 2;
                        int LA4_0 = this.input.LA(1);
                        if (LA4_0 == 4) {
                            alt4 = 1;
                        }

                        switch (alt4) {
                            case 1:
                                ACCESS_SPEC15 = (CommonTree)this.match(this.input, 4, FOLLOW_ACCESS_SPEC_in_access_list265);
                                value |= AccessFlags.getAccessFlag(ACCESS_SPEC15.getText()).getValue();
                                break;
                            default:
                                this.match(this.input, 3, (BitSet)null);
                                return value;
                        }
                    }
                }
            } catch (RecognitionException var8) {
                RecognitionException re = var8;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return value;
        } finally {
            ;
        }
    }

    public final access_or_restriction_list_return access_or_restriction_list() throws RecognitionException {
        access_or_restriction_list_return retval = new access_or_restriction_list_return();
        retval.start = this.input.LT(1);
        CommonTree ACCESS_SPEC16 = null;
        CommonTree HIDDENAPI_RESTRICTION17 = null;
        retval.value = 0;
        HiddenApiRestriction hiddenApiRestriction = null;
        List<HiddenApiRestriction> domainSpecificApiRestrictions = new ArrayList();

        try {
            try {
                this.match(this.input, 98, FOLLOW_I_ACCESS_OR_RESTRICTION_LIST_in_access_or_restriction_list308);
                if (this.input.LA(1) == 2) {
                    this.match(this.input, 2, (BitSet)null);

                    label98:
                    while(true) {
                        int alt5 = 3;
                        int LA5_0 = this.input.LA(1);
                        if (LA5_0 == 4) {
                            alt5 = 1;
                        } else if (LA5_0 == 41) {
                            alt5 = 2;
                        }

                        switch (alt5) {
                            case 1:
                                ACCESS_SPEC16 = (CommonTree)this.match(this.input, 4, FOLLOW_ACCESS_SPEC_in_access_or_restriction_list326);
                                retval.value |= AccessFlags.getAccessFlag(ACCESS_SPEC16.getText()).getValue();
                                break;
                            case 2:
                                HIDDENAPI_RESTRICTION17 = (CommonTree)this.match(this.input, 41, FOLLOW_HIDDENAPI_RESTRICTION_in_access_or_restriction_list356);
                                if (this.opcodes.api < 29) {
                                    throw new SemanticException(this.input, HIDDENAPI_RESTRICTION17, "Hidden API restrictions are only supported on api 29 and above.", new Object[0]);
                                }

                                HiddenApiRestriction restriction = HiddenApiRestriction.forName(HIDDENAPI_RESTRICTION17.getText());
                                if (restriction.isDomainSpecificApiFlag()) {
                                    domainSpecificApiRestrictions.add(restriction);
                                } else {
                                    if (hiddenApiRestriction != null) {
                                        throw new SemanticException(this.input, HIDDENAPI_RESTRICTION17, "Only one hidden api restriction may be specified.", new Object[0]);
                                    }

                                    hiddenApiRestriction = restriction;
                                }
                                break;
                            default:
                                this.match(this.input, 3, (BitSet)null);
                                break label98;
                        }
                    }
                }

                ImmutableSet.Builder builder = ImmutableSet.builder();
                if (hiddenApiRestriction != null) {
                    builder.add(hiddenApiRestriction);
                }

                builder.addAll(domainSpecificApiRestrictions);
                retval.hiddenApiRestrictions = builder.build();
            } catch (RecognitionException var12) {
                RecognitionException re = var12;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return retval;
        } finally {
            ;
        }
    }

    public final List<BuilderField> fields() throws RecognitionException {
        List<BuilderField> fields = null;
        BuilderField field18 = null;
        fields = Lists.newArrayList();

        try {
            try {
                this.match(this.input, 118, FOLLOW_I_FIELDS_in_fields405);
                if (this.input.LA(1) == 2) {
                    this.match(this.input, 2, (BitSet)null);

                    while(true) {
                        int alt6 = 2;
                        int LA6_0 = this.input.LA(1);
                        if (LA6_0 == 117) {
                            alt6 = 1;
                        }

                        switch (alt6) {
                            case 1:
                                this.pushFollow(FOLLOW_field_in_fields414);
                                field18 = this.field();
                                --this.state._fsp;
                                fields.add(field18);
                                break;
                            default:
                                this.match(this.input, 3, (BitSet)null);
                                return fields;
                        }
                    }
                }
            } catch (RecognitionException var8) {
                RecognitionException re = var8;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return fields;
        } finally {
            ;
        }
    }

    public final List<BuilderMethod> methods() throws RecognitionException {
        List<BuilderMethod> methods = null;
        BuilderMethod method19 = null;
        methods = Lists.newArrayList();

        try {
            try {
                this.match(this.input, 127, FOLLOW_I_METHODS_in_methods446);
                if (this.input.LA(1) == 2) {
                    this.match(this.input, 2, (BitSet)null);

                    while(true) {
                        int alt7 = 2;
                        int LA7_0 = this.input.LA(1);
                        if (LA7_0 == 126) {
                            alt7 = 1;
                        }

                        switch (alt7) {
                            case 1:
                                this.pushFollow(FOLLOW_method_in_methods455);
                                method19 = this.method();
                                --this.state._fsp;
                                methods.add(method19);
                                break;
                            default:
                                this.match(this.input, 3, (BitSet)null);
                                return methods;
                        }
                    }
                }
            } catch (RecognitionException var8) {
                RecognitionException re = var8;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return methods;
        } finally {
            ;
        }
    }

    public final BuilderField field() throws RecognitionException {
        BuilderField field = null;
        CommonTree SIMPLE_NAME22 = null;
        TreeRuleReturnScope access_or_restriction_list20 = null;
        EncodedValue field_initial_value21 = null;
        TreeRuleReturnScope nonvoid_type_descriptor23 = null;
        Set<Annotation> annotations24 = null;

        try {
            try {
                this.match(this.input, 117, FOLLOW_I_FIELD_in_field480);
                this.match(this.input, 2, (BitSet)null);
                SIMPLE_NAME22 = (CommonTree)this.match(this.input, 208, FOLLOW_SIMPLE_NAME_in_field482);
                this.pushFollow(FOLLOW_access_or_restriction_list_in_field484);
                access_or_restriction_list20 = this.access_or_restriction_list();
                --this.state._fsp;
                this.match(this.input, 120, FOLLOW_I_FIELD_TYPE_in_field487);
                this.match(this.input, 2, (BitSet)null);
                this.pushFollow(FOLLOW_nonvoid_type_descriptor_in_field489);
                nonvoid_type_descriptor23 = this.nonvoid_type_descriptor();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                this.pushFollow(FOLLOW_field_initial_value_in_field492);
                field_initial_value21 = this.field_initial_value();
                --this.state._fsp;
                int alt8 = 2;
                int LA8_0 = this.input.LA(1);
                if (LA8_0 == 100) {
                    alt8 = 1;
                }

                switch (alt8) {
                    case 1:
                        this.pushFollow(FOLLOW_annotations_in_field494);
                        annotations24 = this.annotations();
                        --this.state._fsp;
                    default:
                        this.match(this.input, 3, (BitSet)null);
                        int accessFlags = access_or_restriction_list20 != null ? ((access_or_restriction_list_return)access_or_restriction_list20).value : 0;
                        Set<HiddenApiRestriction> hiddenApiRestrictions = access_or_restriction_list20 != null ? ((access_or_restriction_list_return)access_or_restriction_list20).hiddenApiRestrictions : null;
                        if (!AccessFlags.STATIC.isSet(accessFlags) && field_initial_value21 != null) {
                            throw new SemanticException(this.input, "Initial field values can only be specified for static fields.", new Object[0]);
                        }

                        field = this.dexBuilder.internField(this.classType, SIMPLE_NAME22 != null ? SIMPLE_NAME22.getText() : null, nonvoid_type_descriptor23 != null ? ((nonvoid_type_descriptor_return)nonvoid_type_descriptor23).type : null, accessFlags, field_initial_value21, annotations24, hiddenApiRestrictions);
                }
            } catch (RecognitionException var14) {
                RecognitionException re = var14;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return field;
        } finally {
            ;
        }
    }

    public final EncodedValue field_initial_value() throws RecognitionException {
        EncodedValue encodedValue = null;
        ImmutableEncodedValue literal25 = null;

        try {
            try {
                int alt9 = 0;
                int LA9_0 = this.input.LA(1);
                if (LA9_0 == 119) {
                    alt9 = 1;
                } else {
                    if (LA9_0 != 3 && LA9_0 != 100) {
                        NoViableAltException nvae = new NoViableAltException("", 9, 0, this.input);
                        throw nvae;
                    }

                    alt9 = 2;
                }

                switch (alt9) {
                    case 1:
                        this.match(this.input, 119, FOLLOW_I_FIELD_INITIAL_VALUE_in_field_initial_value515);
                        this.match(this.input, 2, (BitSet)null);
                        this.pushFollow(FOLLOW_literal_in_field_initial_value517);
                        literal25 = this.literal();
                        --this.state._fsp;
                        this.match(this.input, 3, (BitSet)null);
                        encodedValue = literal25;
                    case 2:
                }
            } catch (RecognitionException var9) {
                RecognitionException re = var9;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return encodedValue;
        } finally {
            ;
        }
    }

    public final ImmutableEncodedValue literal() throws RecognitionException {
        ImmutableEncodedValue encodedValue = null;
        long long_literal27 = 0L;
        float float_literal30 = 0.0F;
        double double_literal31 = 0.0;
        String string_literal33 = null;
        boolean bool_literal34 = false;
        String type_descriptor35 = null;
        List<EncodedValue> array_literal36 = null;
        TreeRuleReturnScope subannotation37 = null;
        ImmutableFieldReference field_literal38 = null;
        ImmutableMethodReference method_literal39 = null;
        ImmutableFieldReference enum_literal40 = null;
        ImmutableMethodHandleReference method_handle_literal41 = null;
        ImmutableMethodProtoReference method_prototype42 = null;

        try {
            try {
                int alt10 = 0;
                switch (this.input.LA(1)) {
                    case 8:
                    case 16:
                    case 202:
                    case 215:
                        alt10 = 11;
                        break;
                    case 11:
                        alt10 = 9;
                        break;
                    case 12:
                        alt10 = 4;
                        break;
                    case 15:
                        alt10 = 7;
                        break;
                    case 23:
                        alt10 = 6;
                        break;
                    case 39:
                        alt10 = 5;
                        break;
                    case 95:
                        alt10 = 1;
                        break;
                    case 110:
                        alt10 = 12;
                        break;
                    case 111:
                        alt10 = 16;
                        break;
                    case 112:
                        alt10 = 14;
                        break;
                    case 113:
                        alt10 = 15;
                        break;
                    case 114:
                        alt10 = 17;
                        break;
                    case 128:
                        alt10 = 18;
                        break;
                    case 183:
                        alt10 = 13;
                        break;
                    case 189:
                        alt10 = 2;
                        break;
                    case 195:
                        alt10 = 10;
                        break;
                    case 207:
                        alt10 = 3;
                        break;
                    case 211:
                        alt10 = 8;
                        break;
                    default:
                        NoViableAltException nvae = new NoViableAltException("", 10, 0, this.input);
                        throw nvae;
                }

                switch (alt10) {
                    case 1:
                        this.pushFollow(FOLLOW_integer_literal_in_literal539);
                        int integer_literal26 = this.integer_literal();
                        --this.state._fsp;
                        encodedValue = new ImmutableIntEncodedValue(integer_literal26);
                        break;
                    case 2:
                        this.pushFollow(FOLLOW_long_literal_in_literal547);
                        long_literal27 = this.long_literal();
                        --this.state._fsp;
                        encodedValue = new ImmutableLongEncodedValue(long_literal27);
                        break;
                    case 3:
                        this.pushFollow(FOLLOW_short_literal_in_literal555);
                        short short_literal28 = this.short_literal();
                        --this.state._fsp;
                        encodedValue = new ImmutableShortEncodedValue(short_literal28);
                        break;
                    case 4:
                        this.pushFollow(FOLLOW_byte_literal_in_literal563);
                        byte byte_literal29 = this.byte_literal();
                        --this.state._fsp;
                        encodedValue = new ImmutableByteEncodedValue(byte_literal29);
                        break;
                    case 5:
                        this.pushFollow(FOLLOW_float_literal_in_literal571);
                        float_literal30 = this.float_literal();
                        --this.state._fsp;
                        encodedValue = new ImmutableFloatEncodedValue(float_literal30);
                        break;
                    case 6:
                        this.pushFollow(FOLLOW_double_literal_in_literal579);
                        double_literal31 = this.double_literal();
                        --this.state._fsp;
                        encodedValue = new ImmutableDoubleEncodedValue(double_literal31);
                        break;
                    case 7:
                        this.pushFollow(FOLLOW_char_literal_in_literal587);
                        char char_literal32 = this.char_literal();
                        --this.state._fsp;
                        encodedValue = new ImmutableCharEncodedValue(char_literal32);
                        break;
                    case 8:
                        this.pushFollow(FOLLOW_string_literal_in_literal595);
                        string_literal33 = this.string_literal();
                        --this.state._fsp;
                        encodedValue = new ImmutableStringEncodedValue(string_literal33);
                        break;
                    case 9:
                        this.pushFollow(FOLLOW_bool_literal_in_literal603);
                        bool_literal34 = this.bool_literal();
                        --this.state._fsp;
                        encodedValue = ImmutableBooleanEncodedValue.forBoolean(bool_literal34);
                        break;
                    case 10:
                        this.match(this.input, 195, FOLLOW_NULL_LITERAL_in_literal611);
                        encodedValue = ImmutableNullEncodedValue.INSTANCE;
                        break;
                    case 11:
                        this.pushFollow(FOLLOW_type_descriptor_in_literal619);
                        type_descriptor35 = this.type_descriptor();
                        --this.state._fsp;
                        encodedValue = new ImmutableTypeEncodedValue(type_descriptor35);
                        break;
                    case 12:
                        this.pushFollow(FOLLOW_array_literal_in_literal627);
                        array_literal36 = this.array_literal();
                        --this.state._fsp;
                        encodedValue = new ImmutableArrayEncodedValue(array_literal36);
                        break;
                    case 13:
                        this.pushFollow(FOLLOW_subannotation_in_literal635);
                        subannotation37 = this.subannotation();
                        --this.state._fsp;
                        encodedValue = new ImmutableAnnotationEncodedValue(subannotation37 != null ? ((subannotation_return)subannotation37).annotationType : null, subannotation37 != null ? ((subannotation_return)subannotation37).elements : null);
                        break;
                    case 14:
                        this.pushFollow(FOLLOW_field_literal_in_literal643);
                        field_literal38 = this.field_literal();
                        --this.state._fsp;
                        encodedValue = new ImmutableFieldEncodedValue(field_literal38);
                        break;
                    case 15:
                        this.pushFollow(FOLLOW_method_literal_in_literal651);
                        method_literal39 = this.method_literal();
                        --this.state._fsp;
                        encodedValue = new ImmutableMethodEncodedValue(method_literal39);
                        break;
                    case 16:
                        this.pushFollow(FOLLOW_enum_literal_in_literal659);
                        enum_literal40 = this.enum_literal();
                        --this.state._fsp;
                        encodedValue = new ImmutableEnumEncodedValue(enum_literal40);
                        break;
                    case 17:
                        this.pushFollow(FOLLOW_method_handle_literal_in_literal667);
                        method_handle_literal41 = this.method_handle_literal();
                        --this.state._fsp;
                        encodedValue = new ImmutableMethodHandleEncodedValue(method_handle_literal41);
                        break;
                    case 18:
                        this.pushFollow(FOLLOW_method_prototype_in_literal675);
                        method_prototype42 = this.method_prototype();
                        --this.state._fsp;
                        encodedValue = new ImmutableMethodTypeEncodedValue(method_prototype42);
                }
            } catch (RecognitionException var26) {
                RecognitionException re = var26;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return (ImmutableEncodedValue)encodedValue;
        } finally {
            ;
        }
    }

    public final Number fixed_64bit_literal_number() throws RecognitionException {
        Number value = null;
        long long_literal44 = 0L;
        float float_literal47 = 0.0F;
        double double_literal48 = 0.0;
        boolean bool_literal50 = false;

        try {
            try {
                int alt11 = 0;
                switch (this.input.LA(1)) {
                    case 11:
                        alt11 = 8;
                        break;
                    case 12:
                        alt11 = 4;
                        break;
                    case 15:
                        alt11 = 7;
                        break;
                    case 23:
                        alt11 = 6;
                        break;
                    case 39:
                        alt11 = 5;
                        break;
                    case 95:
                        alt11 = 1;
                        break;
                    case 189:
                        alt11 = 2;
                        break;
                    case 207:
                        alt11 = 3;
                        break;
                    default:
                        NoViableAltException nvae = new NoViableAltException("", 11, 0, this.input);
                        throw nvae;
                }

                switch (alt11) {
                    case 1:
                        this.pushFollow(FOLLOW_integer_literal_in_fixed_64bit_literal_number691);
                        int integer_literal43 = this.integer_literal();
                        --this.state._fsp;
                        value = integer_literal43;
                        break;
                    case 2:
                        this.pushFollow(FOLLOW_long_literal_in_fixed_64bit_literal_number699);
                        long_literal44 = this.long_literal();
                        --this.state._fsp;
                        value = long_literal44;
                        break;
                    case 3:
                        this.pushFollow(FOLLOW_short_literal_in_fixed_64bit_literal_number707);
                        short short_literal45 = this.short_literal();
                        --this.state._fsp;
                        value = short_literal45;
                        break;
                    case 4:
                        this.pushFollow(FOLLOW_byte_literal_in_fixed_64bit_literal_number715);
                        byte byte_literal46 = this.byte_literal();
                        --this.state._fsp;
                        value = byte_literal46;
                        break;
                    case 5:
                        this.pushFollow(FOLLOW_float_literal_in_fixed_64bit_literal_number723);
                        float_literal47 = this.float_literal();
                        --this.state._fsp;
                        value = Float.floatToRawIntBits(float_literal47);
                        break;
                    case 6:
                        this.pushFollow(FOLLOW_double_literal_in_fixed_64bit_literal_number731);
                        double_literal48 = this.double_literal();
                        --this.state._fsp;
                        value = Double.doubleToRawLongBits(double_literal48);
                        break;
                    case 7:
                        this.pushFollow(FOLLOW_char_literal_in_fixed_64bit_literal_number739);
                        char char_literal49 = this.char_literal();
                        --this.state._fsp;
                        value = Integer.valueOf(char_literal49);
                        break;
                    case 8:
                        this.pushFollow(FOLLOW_bool_literal_in_fixed_64bit_literal_number747);
                        bool_literal50 = this.bool_literal();
                        --this.state._fsp;
                        value = bool_literal50 ? 1 : 0;
                }
            } catch (RecognitionException var17) {
                RecognitionException re = var17;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return (Number)value;
        } finally {
            ;
        }
    }

    public final long fixed_64bit_literal() throws RecognitionException {
        long value = 0L;
        long long_literal52 = 0L;
        float float_literal55 = 0.0F;
        double double_literal56 = 0.0;
        boolean bool_literal58 = false;

        try {
            try {
                int alt12 = 0;
                switch (this.input.LA(1)) {
                    case 11:
                        alt12 = 8;
                        break;
                    case 12:
                        alt12 = 4;
                        break;
                    case 15:
                        alt12 = 7;
                        break;
                    case 23:
                        alt12 = 6;
                        break;
                    case 39:
                        alt12 = 5;
                        break;
                    case 95:
                        alt12 = 1;
                        break;
                    case 189:
                        alt12 = 2;
                        break;
                    case 207:
                        alt12 = 3;
                        break;
                    default:
                        NoViableAltException nvae = new NoViableAltException("", 12, 0, this.input);
                        throw nvae;
                }

                switch (alt12) {
                    case 1:
                        this.pushFollow(FOLLOW_integer_literal_in_fixed_64bit_literal762);
                        int integer_literal51 = this.integer_literal();
                        --this.state._fsp;
                        value = (long)integer_literal51;
                        break;
                    case 2:
                        this.pushFollow(FOLLOW_long_literal_in_fixed_64bit_literal770);
                        long_literal52 = this.long_literal();
                        --this.state._fsp;
                        value = long_literal52;
                        break;
                    case 3:
                        this.pushFollow(FOLLOW_short_literal_in_fixed_64bit_literal778);
                        short short_literal53 = this.short_literal();
                        --this.state._fsp;
                        value = (long)short_literal53;
                        break;
                    case 4:
                        this.pushFollow(FOLLOW_byte_literal_in_fixed_64bit_literal786);
                        byte byte_literal54 = this.byte_literal();
                        --this.state._fsp;
                        value = (long)byte_literal54;
                        break;
                    case 5:
                        this.pushFollow(FOLLOW_float_literal_in_fixed_64bit_literal794);
                        float_literal55 = this.float_literal();
                        --this.state._fsp;
                        value = (long)Float.floatToRawIntBits(float_literal55);
                        break;
                    case 6:
                        this.pushFollow(FOLLOW_double_literal_in_fixed_64bit_literal802);
                        double_literal56 = this.double_literal();
                        --this.state._fsp;
                        value = Double.doubleToRawLongBits(double_literal56);
                        break;
                    case 7:
                        this.pushFollow(FOLLOW_char_literal_in_fixed_64bit_literal810);
                        char char_literal57 = this.char_literal();
                        --this.state._fsp;
                        value = (long)char_literal57;
                        break;
                    case 8:
                        this.pushFollow(FOLLOW_bool_literal_in_fixed_64bit_literal818);
                        bool_literal58 = this.bool_literal();
                        --this.state._fsp;
                        value = bool_literal58 ? 1L : 0L;
                }
            } catch (RecognitionException var18) {
                RecognitionException re = var18;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return value;
        } finally {
            ;
        }
    }

    public final int fixed_32bit_literal() throws RecognitionException {
        int value = 0;
        long long_literal60 = 0L;
        float float_literal63 = 0.0F;
        boolean bool_literal65 = false;

        try {
            try {
                int alt13 = 0;
                switch (this.input.LA(1)) {
                    case 11:
                        alt13 = 7;
                        break;
                    case 12:
                        alt13 = 4;
                        break;
                    case 15:
                        alt13 = 6;
                        break;
                    case 39:
                        alt13 = 5;
                        break;
                    case 95:
                        alt13 = 1;
                        break;
                    case 189:
                        alt13 = 2;
                        break;
                    case 207:
                        alt13 = 3;
                        break;
                    default:
                        NoViableAltException nvae = new NoViableAltException("", 13, 0, this.input);
                        throw nvae;
                }

                switch (alt13) {
                    case 1:
                        this.pushFollow(FOLLOW_integer_literal_in_fixed_32bit_literal835);
                        int integer_literal59 = this.integer_literal();
                        --this.state._fsp;
                        value = integer_literal59;
                        break;
                    case 2:
                        this.pushFollow(FOLLOW_long_literal_in_fixed_32bit_literal843);
                        long_literal60 = this.long_literal();
                        --this.state._fsp;
                        LiteralTools.checkInt(long_literal60);
                        value = (int)long_literal60;
                        break;
                    case 3:
                        this.pushFollow(FOLLOW_short_literal_in_fixed_32bit_literal851);
                        short short_literal61 = this.short_literal();
                        --this.state._fsp;
                        value = short_literal61;
                        break;
                    case 4:
                        this.pushFollow(FOLLOW_byte_literal_in_fixed_32bit_literal859);
                        byte byte_literal62 = this.byte_literal();
                        --this.state._fsp;
                        value = byte_literal62;
                        break;
                    case 5:
                        this.pushFollow(FOLLOW_float_literal_in_fixed_32bit_literal867);
                        float_literal63 = this.float_literal();
                        --this.state._fsp;
                        value = Float.floatToRawIntBits(float_literal63);
                        break;
                    case 6:
                        this.pushFollow(FOLLOW_char_literal_in_fixed_32bit_literal875);
                        char char_literal64 = this.char_literal();
                        --this.state._fsp;
                        value = char_literal64;
                        break;
                    case 7:
                        this.pushFollow(FOLLOW_bool_literal_in_fixed_32bit_literal883);
                        bool_literal65 = this.bool_literal();
                        --this.state._fsp;
                        value = bool_literal65 ? 1 : 0;
                }
            } catch (RecognitionException var15) {
                RecognitionException re = var15;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return value;
        } finally {
            ;
        }
    }

    public final List<Number> array_elements() throws RecognitionException {
        List<Number> elements = null;
        Number fixed_64bit_literal_number66 = null;

        try {
            try {
                elements = Lists.newArrayList();
                this.match(this.input, 102, FOLLOW_I_ARRAY_ELEMENTS_in_array_elements905);
                if (this.input.LA(1) == 2) {
                    this.match(this.input, 2, (BitSet)null);

                    while(true) {
                        int alt14 = 2;
                        int LA14_0 = this.input.LA(1);
                        if (LA14_0 >= 11 && LA14_0 <= 12 || LA14_0 == 15 || LA14_0 == 23 || LA14_0 == 39 || LA14_0 == 95 || LA14_0 == 189 || LA14_0 == 207) {
                            alt14 = 1;
                        }

                        switch (alt14) {
                            case 1:
                                this.pushFollow(FOLLOW_fixed_64bit_literal_number_in_array_elements914);
                                fixed_64bit_literal_number66 = this.fixed_64bit_literal_number();
                                --this.state._fsp;
                                elements.add(fixed_64bit_literal_number66);
                                break;
                            default:
                                this.match(this.input, 3, (BitSet)null);
                                return elements;
                        }
                    }
                }
            } catch (RecognitionException var8) {
                RecognitionException re = var8;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return elements;
        } finally {
            ;
        }
    }

    public final List<Label> packed_switch_elements() throws RecognitionException {
        List<Label> elements = null;
        Label label_ref67 = null;
        elements = Lists.newArrayList();

        try {
            try {
                this.match(this.input, 131, FOLLOW_I_PACKED_SWITCH_ELEMENTS_in_packed_switch_elements950);
                if (this.input.LA(1) == 2) {
                    this.match(this.input, 2, (BitSet)null);

                    while(true) {
                        int alt15 = 2;
                        int LA15_0 = this.input.LA(1);
                        if (LA15_0 == 208) {
                            alt15 = 1;
                        }

                        switch (alt15) {
                            case 1:
                                this.pushFollow(FOLLOW_label_ref_in_packed_switch_elements959);
                                label_ref67 = this.label_ref();
                                --this.state._fsp;
                                elements.add(label_ref67);
                                break;
                            default:
                                this.match(this.input, 3, (BitSet)null);
                                return elements;
                        }
                    }
                }
            } catch (RecognitionException var8) {
                RecognitionException re = var8;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return elements;
        } finally {
            ;
        }
    }

    public final List<SwitchLabelElement> sparse_switch_elements() throws RecognitionException {
        List<SwitchLabelElement> elements = null;
        Label label_ref69 = null;
        elements = Lists.newArrayList();

        try {
            try {
                this.match(this.input, 142, FOLLOW_I_SPARSE_SWITCH_ELEMENTS_in_sparse_switch_elements994);
                if (this.input.LA(1) == 2) {
                    this.match(this.input, 2, (BitSet)null);

                    while(true) {
                        int alt16 = 2;
                        int LA16_0 = this.input.LA(1);
                        if (LA16_0 >= 11 && LA16_0 <= 12 || LA16_0 == 15 || LA16_0 == 39 || LA16_0 == 95 || LA16_0 == 189 || LA16_0 == 207) {
                            alt16 = 1;
                        }

                        switch (alt16) {
                            case 1:
                                this.pushFollow(FOLLOW_fixed_32bit_literal_in_sparse_switch_elements1004);
                                int fixed_32bit_literal68 = this.fixed_32bit_literal();
                                --this.state._fsp;
                                this.pushFollow(FOLLOW_label_ref_in_sparse_switch_elements1006);
                                label_ref69 = this.label_ref();
                                --this.state._fsp;
                                elements.add(new SwitchLabelElement(fixed_32bit_literal68, label_ref69));
                                break;
                            default:
                                this.match(this.input, 3, (BitSet)null);
                                return elements;
                        }
                    }
                }
            } catch (RecognitionException var9) {
                RecognitionException re = var9;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return elements;
        } finally {
            ;
        }
    }

    public final BuilderMethod method() throws RecognitionException {
        this.method_stack.push(new method_scope());
        BuilderMethod ret = null;
        CommonTree I_METHOD74 = null;
        TreeRuleReturnScope access_or_restriction_list70 = null;
        TreeRuleReturnScope method_name_and_prototype71 = null;
        TreeRuleReturnScope registers_directive72 = null;
        List<BuilderTryBlock> catches73 = null;
        Set<Annotation> annotations75 = null;
        ((method_scope)this.method_stack.peek()).totalMethodRegisters = 0;
        ((method_scope)this.method_stack.peek()).methodParameterRegisters = 0;
        ((method_scope)this.method_stack.peek()).isStatic = false;
        Set<HiddenApiRestriction> hiddenApiRestrictions = null;

        try {
            I_METHOD74 = (CommonTree)this.match(this.input, 126, FOLLOW_I_METHOD_in_method1058);
            this.match(this.input, 2, (BitSet)null);
            this.pushFollow(FOLLOW_method_name_and_prototype_in_method1066);
            method_name_and_prototype71 = this.method_name_and_prototype();
            --this.state._fsp;
            this.pushFollow(FOLLOW_access_or_restriction_list_in_method1074);
            access_or_restriction_list70 = this.access_or_restriction_list();
            --this.state._fsp;
            int accessFlags = access_or_restriction_list70 != null ? ((access_or_restriction_list_return)access_or_restriction_list70).value : 0;
            hiddenApiRestrictions = access_or_restriction_list70 != null ? ((access_or_restriction_list_return)access_or_restriction_list70).hiddenApiRestrictions : null;
            ((method_scope)this.method_stack.peek()).isStatic = AccessFlags.STATIC.isSet(accessFlags);
            ((method_scope)this.method_stack.peek()).methodParameterRegisters = MethodUtil.getParameterRegisterCount(method_name_and_prototype71 != null ? ((method_name_and_prototype_return)method_name_and_prototype71).parameters : null, ((method_scope)this.method_stack.peek()).isStatic);
            int alt17 = 0;
            int LA17_0 = this.input.LA(1);
            if (LA17_0 != 125 && LA17_0 != 137) {
                if (LA17_0 != 130) {
                    NoViableAltException nvae = new NoViableAltException("", 17, 0, this.input);
                    throw nvae;
                }

                alt17 = 2;
            } else {
                alt17 = 1;
            }

            switch (alt17) {
                case 1:
                    this.pushFollow(FOLLOW_registers_directive_in_method1101);
                    registers_directive72 = this.registers_directive();
                    --this.state._fsp;
                    if (registers_directive72 != null && ((registers_directive_return)registers_directive72).isLocalsDirective) {
                        ((method_scope)this.method_stack.peek()).totalMethodRegisters = (registers_directive72 != null ? ((registers_directive_return)registers_directive72).registers : 0) + ((method_scope)this.method_stack.peek()).methodParameterRegisters;
                    } else {
                        ((method_scope)this.method_stack.peek()).totalMethodRegisters = registers_directive72 != null ? ((registers_directive_return)registers_directive72).registers : 0;
                    }

                    ((method_scope)this.method_stack.peek()).methodBuilder = new MethodImplementationBuilder(((method_scope)this.method_stack.peek()).totalMethodRegisters);
                    break;
                case 2:
                    ((method_scope)this.method_stack.peek()).methodBuilder = new MethodImplementationBuilder(0);
            }

            this.pushFollow(FOLLOW_ordered_method_items_in_method1158);
            this.ordered_method_items();
            --this.state._fsp;
            this.pushFollow(FOLLOW_catches_in_method1166);
            catches73 = this.catches();
            --this.state._fsp;
            this.pushFollow(FOLLOW_parameters_in_method1174);
            this.parameters(method_name_and_prototype71 != null ? ((method_name_and_prototype_return)method_name_and_prototype71).parameters : null);
            --this.state._fsp;
            this.pushFollow(FOLLOW_annotations_in_method1183);
            annotations75 = this.annotations();
            --this.state._fsp;
            this.match(this.input, 3, (BitSet)null);
            MethodImplementation methodImplementation = null;
            boolean isAbstract = false;
            boolean isNative = false;
            if ((accessFlags & AccessFlags.ABSTRACT.getValue()) != 0) {
                isAbstract = true;
            } else if ((accessFlags & AccessFlags.NATIVE.getValue()) != 0) {
                isNative = true;
            }

            methodImplementation = ((method_scope)this.method_stack.peek()).methodBuilder.getMethodImplementation();
            if (Iterables.isEmpty(methodImplementation.getInstructions())) {
                if (!isAbstract && !isNative) {
                    throw new SemanticException(this.input, I_METHOD74, "A non-abstract/non-native method must have at least 1 instruction", new Object[0]);
                }

                String methodType;
                if (isAbstract) {
                    methodType = "an abstract";
                } else {
                    methodType = "a native";
                }

                if ((registers_directive72 != null ? (CommonTree)registers_directive72.start : null) != null) {
                    if (registers_directive72 != null && ((registers_directive_return)registers_directive72).isLocalsDirective) {
                        throw new SemanticException(this.input, registers_directive72 != null ? (CommonTree)registers_directive72.start : null, "A .locals directive is not valid in %s method", new Object[]{methodType});
                    }

                    throw new SemanticException(this.input, registers_directive72 != null ? (CommonTree)registers_directive72.start : null, "A .registers directive is not valid in %s method", new Object[]{methodType});
                }

                if (methodImplementation.getTryBlocks().size() > 0) {
                    throw new SemanticException(this.input, I_METHOD74, "try/catch blocks cannot be present in %s method", new Object[]{methodType});
                }

                if (!Iterables.isEmpty(methodImplementation.getDebugItems())) {
                    throw new SemanticException(this.input, I_METHOD74, "debug directives cannot be present in %s method", new Object[]{methodType});
                }

                methodImplementation = null;
            } else {
                if (isAbstract) {
                    throw new SemanticException(this.input, I_METHOD74, "An abstract method cannot have any instructions", new Object[0]);
                }

                if (isNative) {
                    throw new SemanticException(this.input, I_METHOD74, "A native method cannot have any instructions", new Object[0]);
                }

                if ((registers_directive72 != null ? (CommonTree)registers_directive72.start : null) == null) {
                    throw new SemanticException(this.input, I_METHOD74, "A .registers or .locals directive must be present for a non-abstract/non-final method", new Object[0]);
                }

                if (((method_scope)this.method_stack.peek()).totalMethodRegisters < ((method_scope)this.method_stack.peek()).methodParameterRegisters) {
                    throw new SemanticException(this.input, registers_directive72 != null ? (CommonTree)registers_directive72.start : null, "This method requires at least " + Integer.toString(((method_scope)this.method_stack.peek()).methodParameterRegisters) + " registers, for the method parameters", new Object[0]);
                }
            }

            ret = this.dexBuilder.internMethod(this.classType, method_name_and_prototype71 != null ? ((method_name_and_prototype_return)method_name_and_prototype71).name : null, method_name_and_prototype71 != null ? ((method_name_and_prototype_return)method_name_and_prototype71).parameters : null, method_name_and_prototype71 != null ? ((method_name_and_prototype_return)method_name_and_prototype71).returnType : null, accessFlags, annotations75, hiddenApiRestrictions, methodImplementation);
        } catch (RecognitionException var20) {
            RecognitionException re = var20;
            this.reportError(re);
            this.recover(this.input, re);
        } finally {
            this.method_stack.pop();
        }

        return ret;
    }

    public final ImmutableMethodProtoReference method_prototype() throws RecognitionException {
        ImmutableMethodProtoReference proto = null;
        String type_descriptor76 = null;
        List<String> method_type_list77 = null;

        try {
            try {
                this.match(this.input, 128, FOLLOW_I_METHOD_PROTOTYPE_in_method_prototype1207);
                this.match(this.input, 2, (BitSet)null);
                this.match(this.input, 129, FOLLOW_I_METHOD_RETURN_TYPE_in_method_prototype1210);
                this.match(this.input, 2, (BitSet)null);
                this.pushFollow(FOLLOW_type_descriptor_in_method_prototype1212);
                type_descriptor76 = this.type_descriptor();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                this.pushFollow(FOLLOW_method_type_list_in_method_prototype1215);
                method_type_list77 = this.method_type_list();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                String returnType = type_descriptor76;
                List<String> parameters = method_type_list77;
                proto = new ImmutableMethodProtoReference(parameters, returnType);
            } catch (RecognitionException var9) {
                RecognitionException re = var9;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return proto;
        } finally {
            ;
        }
    }

    public final method_name_and_prototype_return method_name_and_prototype() throws RecognitionException {
        method_name_and_prototype_return retval = new method_name_and_prototype_return();
        retval.start = this.input.LT(1);
        CommonTree SIMPLE_NAME78 = null;
        ImmutableMethodProtoReference method_prototype79 = null;

        try {
            SIMPLE_NAME78 = (CommonTree)this.match(this.input, 208, FOLLOW_SIMPLE_NAME_in_method_name_and_prototype1233);
            this.pushFollow(FOLLOW_method_prototype_in_method_name_and_prototype1235);
            method_prototype79 = this.method_prototype();
            --this.state._fsp;
            retval.name = SIMPLE_NAME78 != null ? SIMPLE_NAME78.getText() : null;
            retval.parameters = Lists.newArrayList();
            int paramRegister = 0;
            Iterator var5 = method_prototype79.getParameterTypes().iterator();

            while(true) {
                char c;
                do {
                    if (!var5.hasNext()) {
                        retval.returnType = method_prototype79.getReturnType();
                        return retval;
                    }

                    CharSequence type = (CharSequence)var5.next();
                    retval.parameters.add(new SmaliMethodParameter(paramRegister++, type.toString()));
                    c = type.charAt(0);
                } while(c != 'D' && c != 'J');

                ++paramRegister;
            }
        } catch (RecognitionException var11) {
            RecognitionException re = var11;
            this.reportError(re);
            this.recover(this.input, re);
            return retval;
        } finally {
            ;
        }
    }

    public final List<String> method_type_list() throws RecognitionException {
        List<String> types = null;
        TreeRuleReturnScope nonvoid_type_descriptor80 = null;
        types = Lists.newArrayList();

        try {
            while(true) {
                int alt18 = 2;
                int LA18_0 = this.input.LA(1);
                if (LA18_0 == 8 || LA18_0 == 16 || LA18_0 == 202) {
                    alt18 = 1;
                }

                switch (alt18) {
                    case 1:
                        this.pushFollow(FOLLOW_nonvoid_type_descriptor_in_method_type_list1269);
                        nonvoid_type_descriptor80 = this.nonvoid_type_descriptor();
                        --this.state._fsp;
                        types.add(nonvoid_type_descriptor80 != null ? ((nonvoid_type_descriptor_return)nonvoid_type_descriptor80).type : null);
                        break;
                    default:
                        return types;
                }
            }
        } catch (RecognitionException var8) {
            RecognitionException re = var8;
            this.reportError(re);
            this.recover(this.input, re);
            return types;
        } finally {
            ;
        }
    }

    public final ImmutableCallSiteReference call_site_reference() throws RecognitionException {
        ImmutableCallSiteReference callSiteReference = null;
        CommonTree call_site_name = null;
        String method_name = null;
        ImmutableMethodReference method_reference81 = null;
        ImmutableMethodProtoReference method_prototype82 = null;
        List<ImmutableEncodedValue> call_site_extra_arguments83 = null;

        try {
            try {
                this.match(this.input, 105, FOLLOW_I_CALL_SITE_REFERENCE_in_call_site_reference1300);
                this.match(this.input, 2, (BitSet)null);
                call_site_name = (CommonTree)this.match(this.input, 208, FOLLOW_SIMPLE_NAME_in_call_site_reference1304);
                this.pushFollow(FOLLOW_string_literal_in_call_site_reference1308);
                method_name = this.string_literal();
                --this.state._fsp;
                this.pushFollow(FOLLOW_method_prototype_in_call_site_reference1310);
                method_prototype82 = this.method_prototype();
                --this.state._fsp;
                this.pushFollow(FOLLOW_call_site_extra_arguments_in_call_site_reference1320);
                call_site_extra_arguments83 = this.call_site_extra_arguments();
                --this.state._fsp;
                this.pushFollow(FOLLOW_method_reference_in_call_site_reference1322);
                method_reference81 = this.method_reference();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                String callSiteName = call_site_name != null ? call_site_name.getText() : null;
                ImmutableMethodHandleReference methodHandleReference = new ImmutableMethodHandleReference(4, method_reference81);
                callSiteReference = new ImmutableCallSiteReference(callSiteName, methodHandleReference, method_name, method_prototype82, call_site_extra_arguments83);
            } catch (RecognitionException var12) {
                RecognitionException re = var12;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return callSiteReference;
        } finally {
            ;
        }
    }

    public final method_handle_type_return method_handle_type() throws RecognitionException {
        method_handle_type_return retval = new method_handle_type_return();
        retval.start = this.input.LT(1);

        try {
            try {
                if (this.input.LA(1) != 82 && (this.input.LA(1) < 192 || this.input.LA(1) > 193)) {
                    MismatchedSetException mse = new MismatchedSetException((BitSet)null, this.input);
                    throw mse;
                }

                this.input.consume();
                this.state.errorRecovery = false;
                retval.methodHandleType = MethodHandleType.getMethodHandleType(this.input.getTokenStream().toString(this.input.getTreeAdaptor().getTokenStartIndex(retval.start), this.input.getTreeAdaptor().getTokenStopIndex(retval.start)));
            } catch (RecognitionException var6) {
                RecognitionException re = var6;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return retval;
        } finally {
            ;
        }
    }

    public final ImmutableMethodHandleReference method_handle_reference() throws RecognitionException {
        ImmutableMethodHandleReference methodHandle = null;
        TreeRuleReturnScope field_reference84 = null;
        ImmutableMethodReference method_reference85 = null;
        TreeRuleReturnScope method_handle_type86 = null;

        try {
            try {
                this.pushFollow(FOLLOW_method_handle_type_in_method_handle_reference1367);
                method_handle_type86 = this.method_handle_type();
                --this.state._fsp;
                int alt19 = 0;
                int nvaeMark;
                int LA19_3;
                NoViableAltException nvae;
                switch (this.input.LA(1)) {
                    case 8:
                        LA19_3 = this.input.LA(2);
                        int nvaeConsume;

                        if (LA19_3 == 202) {
                            nvaeMark = this.input.LA(3);
                            if (nvaeMark != 208) {
                                LA19_3 = this.input.mark();

                                try {
                                    for(nvaeMark = 0; nvaeMark < 2; ++nvaeMark) {
                                        this.input.consume();
                                    }

                                    nvae = new NoViableAltException("", 19, 4, this.input);
                                    throw nvae;
                                } finally {
                                    this.input.rewind(LA19_3);
                                }
                            }

                            LA19_3 = this.input.LA(4);
                            if (LA19_3 != 8 && LA19_3 != 16 && LA19_3 != 202) {
                                if (LA19_3 != 128) {
                                    nvaeMark = this.input.mark();

                                    try {
                                        for(nvaeConsume = 0; nvaeConsume < 3; ++nvaeConsume) {
                                            this.input.consume();
                                        }

                                        nvae = new NoViableAltException("", 19, 3, this.input);
                                        throw nvae;
                                    } finally {
                                        this.input.rewind(nvaeMark);
                                    }
                                }

                                alt19 = 2;
                                break;
                            }

                            alt19 = 1;
                        } else {
                            if (LA19_3 != 16) {
                                nvaeMark = this.input.mark();

                                try {
                                    this.input.consume();
                                    nvae = new NoViableAltException("", 19, 2, this.input);
                                    throw nvae;
                                } finally {
                                    this.input.rewind(nvaeMark);
                                }
                            }

                            nvaeMark = this.input.LA(3);
                            if (nvaeMark != 208) {
                                LA19_3 = this.input.mark();

                                try {
                                    for(nvaeMark = 0; nvaeMark < 2; ++nvaeMark) {
                                        this.input.consume();
                                    }

                                    nvae = new NoViableAltException("", 19, 5, this.input);
                                    throw nvae;
                                } finally {
                                    this.input.rewind(LA19_3);
                                }
                            }

                            LA19_3 = this.input.LA(4);
                            if (LA19_3 != 8 && LA19_3 != 16 && LA19_3 != 202) {
                                if (LA19_3 != 128) {
                                    nvaeMark = this.input.mark();

                                    try {
                                        for(nvaeConsume = 0; nvaeConsume < 3; ++nvaeConsume) {
                                            this.input.consume();
                                        }

                                        nvae = new NoViableAltException("", 19, 3, this.input);
                                        throw nvae;
                                    } finally {
                                        this.input.rewind(nvaeMark);
                                    }
                                }

                                alt19 = 2;
                                break;
                            }

                            alt19 = 1;
                        }
                        break;
                    case 16:
                        LA19_3 = this.input.LA(2);
                        if (LA19_3 != 208) {
                            nvaeMark = this.input.mark();

                            try {
                                this.input.consume();
                                nvae = new NoViableAltException("", 19, 1, this.input);
                                throw nvae;
                            } finally {
                                this.input.rewind(nvaeMark);
                            }
                        }

                        nvaeMark = this.input.LA(3);
                        if (nvaeMark != 8 && nvaeMark != 16 && nvaeMark != 202) {
                            if (nvaeMark != 128) {
                                LA19_3 = this.input.mark();

                                try {
                                    for(nvaeMark = 0; nvaeMark < 2; ++nvaeMark) {
                                        this.input.consume();
                                    }

                                    nvae = new NoViableAltException("", 19, 3, this.input);
                                    throw nvae;
                                } finally {
                                    this.input.rewind(LA19_3);
                                }
                            }

                            alt19 = 2;
                            break;
                        }

                        alt19 = 1;
                        break;
                    case 208:
                        LA19_3 = this.input.LA(2);
                        if (LA19_3 != 8 && LA19_3 != 16 && LA19_3 != 202) {
                            if (LA19_3 != 128) {
                                nvaeMark = this.input.mark();

                                try {
                                    this.input.consume();
                                    nvae = new NoViableAltException("", 19, 3, this.input);
                                    throw nvae;
                                } finally {
                                    this.input.rewind(nvaeMark);
                                }
                            }

                            alt19 = 2;
                            break;
                        }

                        alt19 = 1;
                        break;
                    default:
                        nvae = new NoViableAltException("", 19, 0, this.input);
                        throw nvae;
                }

                switch (alt19) {
                    case 1:
                        this.pushFollow(FOLLOW_field_reference_in_method_handle_reference1370);
                        field_reference84 = this.field_reference();
                        --this.state._fsp;
                        break;
                    case 2:
                        this.pushFollow(FOLLOW_method_reference_in_method_handle_reference1374);
                        method_reference85 = this.method_reference();
                        --this.state._fsp;
                }

                Object reference;
                if ((field_reference84 != null ? this.input.getTokenStream().toString(this.input.getTreeAdaptor().getTokenStartIndex(field_reference84.start), this.input.getTreeAdaptor().getTokenStopIndex(field_reference84.start)) : null) != null) {
                    reference = field_reference84 != null ? ((field_reference_return)field_reference84).fieldReference : null;
                } else {
                    reference = method_reference85;
                }

                methodHandle = new ImmutableMethodHandleReference(method_handle_type86 != null ? ((method_handle_type_return)method_handle_type86).methodHandleType : 0, (ImmutableReference)reference);
            } catch (RecognitionException var117) {
                RecognitionException re = var117;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return methodHandle;
        } finally {
            ;
        }
    }

    public final ImmutableMethodHandleReference method_handle_literal() throws RecognitionException {
        ImmutableMethodHandleReference value = null;
        ImmutableMethodHandleReference method_handle_reference87 = null;

        try {
            try {
                this.match(this.input, 114, FOLLOW_I_ENCODED_METHOD_HANDLE_in_method_handle_literal1391);
                this.match(this.input, 2, (BitSet)null);
                this.pushFollow(FOLLOW_method_handle_reference_in_method_handle_literal1393);
                method_handle_reference87 = this.method_handle_reference();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                value = method_handle_reference87;
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return value;
        } finally {
            ;
        }
    }

    public final ImmutableMethodReference method_reference() throws RecognitionException {
        ImmutableMethodReference methodReference = null;
        CommonTree SIMPLE_NAME89 = null;
        TreeRuleReturnScope reference_type_descriptor88 = null;
        ImmutableMethodProtoReference method_prototype90 = null;

        try {
            try {
                int alt20 = 2;
                int LA20_0 = this.input.LA(1);
                if (LA20_0 == 8 || LA20_0 == 16) {
                    alt20 = 1;
                }

                switch (alt20) {
                    case 1:
                        this.pushFollow(FOLLOW_reference_type_descriptor_in_method_reference1409);
                        reference_type_descriptor88 = this.reference_type_descriptor();
                        --this.state._fsp;
                    default:
                        SIMPLE_NAME89 = (CommonTree)this.match(this.input, 208, FOLLOW_SIMPLE_NAME_in_method_reference1412);
                        this.pushFollow(FOLLOW_method_prototype_in_method_reference1414);
                        method_prototype90 = this.method_prototype();
                        --this.state._fsp;
                        String type;
                        if ((reference_type_descriptor88 != null ? ((reference_type_descriptor_return)reference_type_descriptor88).type : null) == null) {
                            type = this.classType;
                        } else {
                            type = reference_type_descriptor88 != null ? ((reference_type_descriptor_return)reference_type_descriptor88).type : null;
                        }

                        methodReference = new ImmutableMethodReference(type, SIMPLE_NAME89 != null ? SIMPLE_NAME89.getText() : null, method_prototype90.getParameterTypes(), method_prototype90.getReturnType());
                }
            } catch (RecognitionException var11) {
                RecognitionException re = var11;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return methodReference;
        } finally {
            ;
        }
    }

    public final field_reference_return field_reference() throws RecognitionException {
        field_reference_return retval = new field_reference_return();
        retval.start = this.input.LT(1);
        CommonTree SIMPLE_NAME92 = null;
        TreeRuleReturnScope reference_type_descriptor91 = null;
        TreeRuleReturnScope nonvoid_type_descriptor93 = null;

        try {
            try {
                int alt21 = 2;
                int LA21_0 = this.input.LA(1);
                if (LA21_0 == 8 || LA21_0 == 16) {
                    alt21 = 1;
                }

                switch (alt21) {
                    case 1:
                        this.pushFollow(FOLLOW_reference_type_descriptor_in_field_reference1431);
                        reference_type_descriptor91 = this.reference_type_descriptor();
                        --this.state._fsp;
                    default:
                        SIMPLE_NAME92 = (CommonTree)this.match(this.input, 208, FOLLOW_SIMPLE_NAME_in_field_reference1434);
                        this.pushFollow(FOLLOW_nonvoid_type_descriptor_in_field_reference1436);
                        nonvoid_type_descriptor93 = this.nonvoid_type_descriptor();
                        --this.state._fsp;
                        String type;
                        if ((reference_type_descriptor91 != null ? ((reference_type_descriptor_return)reference_type_descriptor91).type : null) == null) {
                            type = this.classType;
                        } else {
                            type = reference_type_descriptor91 != null ? ((reference_type_descriptor_return)reference_type_descriptor91).type : null;
                        }

                        retval.fieldReference = new ImmutableFieldReference(type, SIMPLE_NAME92 != null ? SIMPLE_NAME92.getText() : null, nonvoid_type_descriptor93 != null ? ((nonvoid_type_descriptor_return)nonvoid_type_descriptor93).type : null);
                }
            } catch (RecognitionException var11) {
                RecognitionException re = var11;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return retval;
        } finally {
            ;
        }
    }

    public final registers_directive_return registers_directive() throws RecognitionException {
        registers_directive_return retval = new registers_directive_return();
        retval.start = this.input.LT(1);

        try {
            try {
                retval.registers = 0;
                int alt22 = 0;
                int LA22_0 = this.input.LA(1);
                if (LA22_0 == 137) {
                    alt22 = 1;
                } else {
                    if (LA22_0 != 125) {
                        NoViableAltException nvae = new NoViableAltException("", 22, 0, this.input);
                        throw nvae;
                    }

                    alt22 = 2;
                }

                switch (alt22) {
                    case 1:
                        this.match(this.input, 137, FOLLOW_I_REGISTERS_in_registers_directive1462);
                        retval.isLocalsDirective = false;
                        break;
                    case 2:
                        this.match(this.input, 125, FOLLOW_I_LOCALS_in_registers_directive1474);
                        retval.isLocalsDirective = true;
                }

                this.match(this.input, 2, (BitSet)null);
                this.pushFollow(FOLLOW_short_integral_literal_in_registers_directive1492);
                short short_integral_literal94 = this.short_integral_literal();
                --this.state._fsp;
                retval.registers = short_integral_literal94 & '\uffff';
                this.match(this.input, 3, (BitSet)null);
            } catch (RecognitionException var9) {
                RecognitionException re = var9;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return retval;
        } finally {
            ;
        }
    }

    public final void label_def() throws RecognitionException {
        CommonTree SIMPLE_NAME95 = null;

        try {
            try {
                this.match(this.input, 122, FOLLOW_I_LABEL_in_label_def1512);
                this.match(this.input, 2, (BitSet)null);
                SIMPLE_NAME95 = (CommonTree)this.match(this.input, 208, FOLLOW_SIMPLE_NAME_in_label_def1514);
                this.match(this.input, 3, (BitSet)null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addLabel(SIMPLE_NAME95 != null ? SIMPLE_NAME95.getText() : null);
            } catch (RecognitionException var6) {
                RecognitionException re = var6;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final List<BuilderTryBlock> catches() throws RecognitionException {
        List<BuilderTryBlock> tryBlocks = null;
        tryBlocks = Lists.newArrayList();

        try {
            try {
                this.match(this.input, 108, FOLLOW_I_CATCHES_in_catches1540);
                if (this.input.LA(1) == 2) {
                    this.match(this.input, 2, (BitSet)null);

                    while(true) {
                        int alt24 = 2;
                        int LA24_0 = this.input.LA(1);
                        if (LA24_0 == 106) {
                            alt24 = 1;
                        }

                        switch (alt24) {
                            case 1:
                                this.pushFollow(FOLLOW_catch_directive_in_catches1542);
                                this.catch_directive();
                                --this.state._fsp;
                                break;
                            default:
                                while(true) {
                                    alt24 = 2;
                                    LA24_0 = this.input.LA(1);
                                    if (LA24_0 == 107) {
                                        alt24 = 1;
                                    }

                                    switch (alt24) {
                                        case 1:
                                            this.pushFollow(FOLLOW_catchall_directive_in_catches1545);
                                            this.catchall_directive();
                                            --this.state._fsp;
                                            break;
                                        default:
                                            this.match(this.input, 3, (BitSet)null);
                                            return tryBlocks;
                                    }
                                }
                        }
                    }
                }
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return tryBlocks;
        } finally {
            ;
        }
    }

    public final void catch_directive() throws RecognitionException {
        Label from = null;
        Label to = null;
        Label using = null;
        TreeRuleReturnScope nonvoid_type_descriptor96 = null;

        try {
            try {
                this.match(this.input, 106, FOLLOW_I_CATCH_in_catch_directive1558);
                this.match(this.input, 2, (BitSet)null);
                this.pushFollow(FOLLOW_nonvoid_type_descriptor_in_catch_directive1560);
                nonvoid_type_descriptor96 = this.nonvoid_type_descriptor();
                --this.state._fsp;
                this.pushFollow(FOLLOW_label_ref_in_catch_directive1564);
                from = this.label_ref();
                --this.state._fsp;
                this.pushFollow(FOLLOW_label_ref_in_catch_directive1568);
                to = this.label_ref();
                --this.state._fsp;
                this.pushFollow(FOLLOW_label_ref_in_catch_directive1572);
                using = this.label_ref();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addCatch(this.dexBuilder.internTypeReference(nonvoid_type_descriptor96 != null ? ((nonvoid_type_descriptor_return)nonvoid_type_descriptor96).type : null), from, to, using);
            } catch (RecognitionException var9) {
                RecognitionException re = var9;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void catchall_directive() throws RecognitionException {
        Label from = null;
        Label to = null;
        Label using = null;

        try {
            try {
                this.match(this.input, 107, FOLLOW_I_CATCHALL_in_catchall_directive1588);
                this.match(this.input, 2, (BitSet)null);
                this.pushFollow(FOLLOW_label_ref_in_catchall_directive1592);
                from = this.label_ref();
                --this.state._fsp;
                this.pushFollow(FOLLOW_label_ref_in_catchall_directive1596);
                to = this.label_ref();
                --this.state._fsp;
                this.pushFollow(FOLLOW_label_ref_in_catchall_directive1600);
                using = this.label_ref();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addCatch(from, to, using);
            } catch (RecognitionException var8) {
                RecognitionException re = var8;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void parameters(List<SmaliMethodParameter> parameters) throws RecognitionException {
        try {
            try {
                this.match(this.input, 134, FOLLOW_I_PARAMETERS_in_parameters1617);
                if (this.input.LA(1) == 2) {
                    this.match(this.input, 2, (BitSet)null);

                    while(true) {
                        int alt25 = 2;
                        int LA25_0 = this.input.LA(1);
                        if (LA25_0 == 133) {
                            alt25 = 1;
                        }

                        switch (alt25) {
                            case 1:
                                this.pushFollow(FOLLOW_parameter_in_parameters1620);
                                this.parameter(parameters);
                                --this.state._fsp;
                                break;
                            default:
                                this.match(this.input, 3, (BitSet)null);
                                return;
                        }
                    }
                }
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void parameter(List<SmaliMethodParameter> parameters) throws RecognitionException {
        CommonTree REGISTER97 = null;
        CommonTree I_PARAMETER98 = null;
        String string_literal99 = null;
        Set<Annotation> annotations100 = null;

        try {
            try {
                I_PARAMETER98 = (CommonTree)this.match(this.input, 133, FOLLOW_I_PARAMETER_in_parameter1636);
                this.match(this.input, 2, (BitSet)null);
                REGISTER97 = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_parameter1638);
                int alt26 = 2;
                int LA26_0 = this.input.LA(1);
                if (LA26_0 == 211) {
                    alt26 = 1;
                }

                switch (alt26) {
                    case 1:
                        this.pushFollow(FOLLOW_string_literal_in_parameter1640);
                        string_literal99 = this.string_literal();
                        --this.state._fsp;
                    default:
                        this.pushFollow(FOLLOW_annotations_in_parameter1643);
                        annotations100 = this.annotations();
                        --this.state._fsp;
                        this.match(this.input, 3, (BitSet)null);
                        int registerNumber = this.parseRegister_short(REGISTER97 != null ? REGISTER97.getText() : null);
                        int totalMethodRegisters = ((method_scope)this.method_stack.peek()).totalMethodRegisters;
                        int methodParameterRegisters = ((method_scope)this.method_stack.peek()).methodParameterRegisters;
                        if (registerNumber >= totalMethodRegisters) {
                            throw new SemanticException(this.input, I_PARAMETER98, "Register %s is larger than the maximum register v%d for this method", new Object[]{REGISTER97 != null ? REGISTER97.getText() : null, totalMethodRegisters - 1});
                        }

                        final int indexGuess = registerNumber - (totalMethodRegisters - methodParameterRegisters) - (((method_scope)this.method_stack.peek()).isStatic ? 0 : 1);
                        if (indexGuess < 0) {
                            throw new SemanticException(this.input, I_PARAMETER98, "Register %s is not a parameter register.", new Object[]{REGISTER97 != null ? REGISTER97.getText() : null});
                        }

                        int parameterIndex = LinearSearch.linearSearch(parameters, SmaliMethodParameter.COMPARATOR, new WithRegister() {
                            public int getRegister() {
                                return indexGuess;
                            }
                        }, indexGuess);
                        if (parameterIndex < 0) {
                            throw new SemanticException(this.input, I_PARAMETER98, "Register %s is the second half of a wide parameter.", new Object[]{REGISTER97 != null ? REGISTER97.getText() : null});
                        }

                        SmaliMethodParameter methodParameter = (SmaliMethodParameter)parameters.get(parameterIndex);
                        methodParameter.name = string_literal99;
                        if (annotations100 != null && annotations100.size() > 0) {
                            methodParameter.annotations = annotations100;
                        }
                }
            } catch (RecognitionException var17) {
                RecognitionException re = var17;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void debug_directive() throws RecognitionException {
        try {
            try {
                int alt27 = 0;
                switch (this.input.LA(1)) {
                    case 115:
                        alt27 = 3;
                        break;
                    case 116:
                        alt27 = 6;
                        break;
                    case 123:
                        alt27 = 1;
                        break;
                    case 124:
                        alt27 = 2;
                        break;
                    case 136:
                        alt27 = 5;
                        break;
                    case 140:
                        alt27 = 4;
                        break;
                    case 141:
                        alt27 = 7;
                        break;
                    default:
                        NoViableAltException nvae = new NoViableAltException("", 27, 0, this.input);
                        throw nvae;
                }

                switch (alt27) {
                    case 1:
                        this.pushFollow(FOLLOW_line_in_debug_directive1660);
                        this.line();
                        --this.state._fsp;
                        break;
                    case 2:
                        this.pushFollow(FOLLOW_local_in_debug_directive1666);
                        this.local();
                        --this.state._fsp;
                        break;
                    case 3:
                        this.pushFollow(FOLLOW_end_local_in_debug_directive1672);
                        this.end_local();
                        --this.state._fsp;
                        break;
                    case 4:
                        this.pushFollow(FOLLOW_restart_local_in_debug_directive1678);
                        this.restart_local();
                        --this.state._fsp;
                        break;
                    case 5:
                        this.pushFollow(FOLLOW_prologue_in_debug_directive1684);
                        this.prologue();
                        --this.state._fsp;
                        break;
                    case 6:
                        this.pushFollow(FOLLOW_epilogue_in_debug_directive1690);
                        this.epilogue();
                        --this.state._fsp;
                        break;
                    case 7:
                        this.pushFollow(FOLLOW_source_in_debug_directive1696);
                        this.source();
                        --this.state._fsp;
                }
            } catch (RecognitionException var6) {
                RecognitionException re = var6;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void line() throws RecognitionException {
        try {
            try {
                this.match(this.input, 123, FOLLOW_I_LINE_in_line1707);
                this.match(this.input, 2, (BitSet)null);
                this.pushFollow(FOLLOW_integral_literal_in_line1709);
                int integral_literal101 = this.integral_literal();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addLineNumber(integral_literal101);
            } catch (RecognitionException var6) {
                RecognitionException re = var6;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void local() throws RecognitionException {
        CommonTree REGISTER102 = null;
        String name = null;
        String signature = null;
        TreeRuleReturnScope nonvoid_type_descriptor103 = null;

        try {
            try {
                this.match(this.input, 124, FOLLOW_I_LOCAL_in_local1727);
                this.match(this.input, 2, (BitSet)null);
                REGISTER102 = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_local1729);
                int alt31 = 2;
                int LA31_0 = this.input.LA(1);
                if (LA31_0 == 195 || LA31_0 == 211) {
                    alt31 = 1;
                }

                int alt28;
                switch (alt31) {
                    case 1:
                         alt28 = 1;
                        int LA28_0 = this.input.LA(1);
                        if (LA28_0 == 195) {
                            alt28 = 1;
                        } else {
                            if (LA28_0 != 211) {
                                NoViableAltException nvae = new NoViableAltException("", 28, 0, this.input);
                                throw nvae;
                            }

                            alt28 = 2;
                        }

                        switch (alt28) {
                            case 1:
                                this.match(this.input, 195, FOLLOW_NULL_LITERAL_in_local1733);
                                break;
                            case 2:
                                this.pushFollow(FOLLOW_string_literal_in_local1739);
                                name = this.string_literal();
                                --this.state._fsp;
                        }

                        int alt29 = 2;
                        int LA29_0 = this.input.LA(1);
                        if (LA29_0 == 8 || LA29_0 == 16 || LA29_0 == 202) {
                            alt29 = 1;
                        }

                        switch (alt29) {
                            case 1:
                                this.pushFollow(FOLLOW_nonvoid_type_descriptor_in_local1742);
                                nonvoid_type_descriptor103 = this.nonvoid_type_descriptor();
                                --this.state._fsp;
                            default:
                                int alt30 = 2;
                                int LA30_0 = this.input.LA(1);
                                if (LA30_0 == 211) {
                                    alt30 = 1;
                                }

                                switch (alt30) {
                                    case 1:
                                        this.pushFollow(FOLLOW_string_literal_in_local1747);
                                        signature = this.string_literal();
                                        --this.state._fsp;
                                }
                        }
                }

                this.match(this.input, 3, (BitSet)null);
                alt28 = this.parseRegister_short(REGISTER102 != null ? REGISTER102.getText() : null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addStartLocal(alt28, this.dexBuilder.internNullableStringReference(name), this.dexBuilder.internNullableTypeReference(nonvoid_type_descriptor103 != null ? ((nonvoid_type_descriptor_return)nonvoid_type_descriptor103).type : null), this.dexBuilder.internNullableStringReference(signature));
            } catch (RecognitionException var16) {
                RecognitionException re = var16;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void end_local() throws RecognitionException {
        CommonTree REGISTER104 = null;

        try {
            try {
                this.match(this.input, 115, FOLLOW_I_END_LOCAL_in_end_local1768);
                this.match(this.input, 2, (BitSet)null);
                REGISTER104 = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_end_local1770);
                this.match(this.input, 3, (BitSet)null);
                int registerNumber = this.parseRegister_short(REGISTER104 != null ? REGISTER104.getText() : null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addEndLocal(registerNumber);
            } catch (RecognitionException var6) {
                RecognitionException re = var6;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void restart_local() throws RecognitionException {
        CommonTree REGISTER105 = null;

        try {
            try {
                this.match(this.input, 140, FOLLOW_I_RESTART_LOCAL_in_restart_local1788);
                this.match(this.input, 2, (BitSet)null);
                REGISTER105 = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_restart_local1790);
                this.match(this.input, 3, (BitSet)null);
                int registerNumber = this.parseRegister_short(REGISTER105 != null ? REGISTER105.getText() : null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addRestartLocal(registerNumber);
            } catch (RecognitionException var6) {
                RecognitionException re = var6;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void prologue() throws RecognitionException {
        try {
            try {
                this.match(this.input, 136, FOLLOW_I_PROLOGUE_in_prologue1807);
                ((method_scope)this.method_stack.peek()).methodBuilder.addPrologue();
            } catch (RecognitionException var5) {
                RecognitionException re = var5;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void epilogue() throws RecognitionException {
        try {
            try {
                this.match(this.input, 116, FOLLOW_I_EPILOGUE_in_epilogue1823);
                ((method_scope)this.method_stack.peek()).methodBuilder.addEpilogue();
            } catch (RecognitionException var5) {
                RecognitionException re = var5;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void source() throws RecognitionException {
        String string_literal106 = null;

        try {
            try {
                this.match(this.input, 141, FOLLOW_I_SOURCE_in_source1840);
                if (this.input.LA(1) == 2) {
                    this.match(this.input, 2, (BitSet)null);
                    int alt32 = 2;
                    int LA32_0 = this.input.LA(1);
                    if (LA32_0 == 211) {
                        alt32 = 1;
                    }

                    switch (alt32) {
                        case 1:
                            this.pushFollow(FOLLOW_string_literal_in_source1842);
                            string_literal106 = this.string_literal();
                            --this.state._fsp;
                        default:
                            this.match(this.input, 3, (BitSet)null);
                    }
                }

                ((method_scope)this.method_stack.peek()).methodBuilder.addSetSourceFile(this.dexBuilder.internNullableStringReference(string_literal106));
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final List<ImmutableEncodedValue> call_site_extra_arguments() throws RecognitionException {
        List<ImmutableEncodedValue> extraArguments = null;
        ImmutableEncodedValue literal107 = null;

        try {
            try {
                extraArguments = Lists.newArrayList();
                this.match(this.input, 104, FOLLOW_I_CALL_SITE_EXTRA_ARGUMENTS_in_call_site_extra_arguments1868);
                if (this.input.LA(1) == 2) {
                    this.match(this.input, 2, (BitSet)null);

                    while(true) {
                        int alt33 = 2;
                        int LA33_0 = this.input.LA(1);
                        if (LA33_0 == 8 || LA33_0 >= 11 && LA33_0 <= 12 || LA33_0 >= 15 && LA33_0 <= 16 || LA33_0 == 23 || LA33_0 == 39 || LA33_0 == 95 || LA33_0 >= 110 && LA33_0 <= 114 || LA33_0 == 128 || LA33_0 == 183 || LA33_0 == 189 || LA33_0 == 195 || LA33_0 == 202 || LA33_0 == 207 || LA33_0 == 211 || LA33_0 == 215) {
                            alt33 = 1;
                        }

                        switch (alt33) {
                            case 1:
                                this.pushFollow(FOLLOW_literal_in_call_site_extra_arguments1871);
                                literal107 = this.literal();
                                --this.state._fsp;
                                extraArguments.add(literal107);
                                break;
                            default:
                                this.match(this.input, 3, (BitSet)null);
                                return extraArguments;
                        }
                    }
                }
            } catch (RecognitionException var8) {
                RecognitionException re = var8;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return extraArguments;
        } finally {
            ;
        }
    }

    public final void ordered_method_items() throws RecognitionException {
        try {
            try {
                this.match(this.input, 130, FOLLOW_I_ORDERED_METHOD_ITEMS_in_ordered_method_items1887);
                if (this.input.LA(1) == 2) {
                    this.match(this.input, 2, (BitSet)null);

                    while(true) {
                        int alt34 = 4;
                        switch (this.input.LA(1)) {
                            case 115:
                            case 116:
                            case 123:
                            case 124:
                            case 136:
                            case 140:
                            case 141:
                                alt34 = 3;
                            case 117:
                            case 118:
                            case 119:
                            case 120:
                            case 121:
                            case 125:
                            case 126:
                            case 127:
                            case 128:
                            case 129:
                            case 130:
                            case 131:
                            case 132:
                            case 133:
                            case 134:
                            case 135:
                            case 137:
                            case 138:
                            case 139:
                            case 142:
                            default:
                                break;
                            case 122:
                                alt34 = 1;
                                break;
                            case 143:
                            case 144:
                            case 145:
                            case 146:
                            case 147:
                            case 148:
                            case 149:
                            case 150:
                            case 151:
                            case 152:
                            case 153:
                            case 154:
                            case 155:
                            case 156:
                            case 157:
                            case 158:
                            case 159:
                            case 160:
                            case 161:
                            case 162:
                            case 163:
                            case 164:
                            case 165:
                            case 166:
                            case 167:
                            case 168:
                            case 169:
                            case 170:
                            case 171:
                            case 172:
                            case 173:
                            case 174:
                            case 175:
                            case 176:
                            case 177:
                            case 178:
                            case 179:
                            case 180:
                            case 181:
                            case 182:
                                alt34 = 2;
                        }

                        switch (alt34) {
                            case 1:
                                this.pushFollow(FOLLOW_label_def_in_ordered_method_items1890);
                                this.label_def();
                                --this.state._fsp;
                                break;
                            case 2:
                                this.pushFollow(FOLLOW_instruction_in_ordered_method_items1894);
                                this.instruction();
                                --this.state._fsp;
                                break;
                            case 3:
                                this.pushFollow(FOLLOW_debug_directive_in_ordered_method_items1898);
                                this.debug_directive();
                                --this.state._fsp;
                                break;
                            default:
                                this.match(this.input, 3, (BitSet)null);
                                return;
                        }
                    }
                }
            } catch (RecognitionException var5) {
                RecognitionException re = var5;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final Label label_ref() throws RecognitionException {
        Label label = null;
        CommonTree SIMPLE_NAME108 = null;

        try {
            try {
                SIMPLE_NAME108 = (CommonTree)this.match(this.input, 208, FOLLOW_SIMPLE_NAME_in_label_ref1914);
                label = ((method_scope)this.method_stack.peek()).methodBuilder.getLabel(SIMPLE_NAME108 != null ? SIMPLE_NAME108.getText() : null);
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return label;
        } finally {
            ;
        }
    }

    public final register_list_return register_list() throws RecognitionException {
        register_list_return retval = new register_list_return();
        retval.start = this.input.LT(1);
        CommonTree I_REGISTER_LIST109 = null;
        CommonTree REGISTER110 = null;
        retval.registers = new byte[5];
        retval.registerCount = 0;

        try {
            try {
                I_REGISTER_LIST109 = (CommonTree)this.match(this.input, 138, FOLLOW_I_REGISTER_LIST_in_register_list1939);
                if (this.input.LA(1) == 2) {
                    this.match(this.input, 2, (BitSet)null);

                    while(true) {
                        int alt35 = 2;
                        int LA35_0 = this.input.LA(1);
                        if (LA35_0 == 204) {
                            alt35 = 1;
                        }

                        switch (alt35) {
                            case 1:
                                REGISTER110 = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_register_list1948);
                                if (retval.registerCount == 5) {
                                    throw new SemanticException(this.input, I_REGISTER_LIST109, "A list of registers can only have a maximum of 5 registers. Use the <op>/range alternate opcode instead.", new Object[0]);
                                }

                                byte[] var10000 = retval.registers;
                                byte var10003 = retval.registerCount;
                                retval.registerCount = (byte)(var10003 + 1);
                                var10000[var10003] = this.parseRegister_nibble(REGISTER110 != null ? REGISTER110.getText() : null);
                                break;
                            default:
                                this.match(this.input, 3, (BitSet)null);
                                return retval;
                        }
                    }
                }
            } catch (RecognitionException var9) {
                RecognitionException re = var9;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return retval;
        } finally {
            ;
        }
    }

    public final register_range_return register_range() throws RecognitionException {
        register_range_return retval = new register_range_return();
        retval.start = this.input.LT(1);
        CommonTree startReg = null;
        CommonTree endReg = null;
        CommonTree I_REGISTER_RANGE111 = null;

        try {
            try {
                I_REGISTER_RANGE111 = (CommonTree)this.match(this.input, 139, FOLLOW_I_REGISTER_RANGE_in_register_range1973);
                int registerCount;
                if (this.input.LA(1) == 2) {
                    this.match(this.input, 2, (BitSet)null);
                    registerCount = 2;
                    int LA37_0 = this.input.LA(1);
                    if (LA37_0 == 204) {
                        registerCount = 1;
                    }

                    switch (registerCount) {
                        case 1:
                            startReg = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_register_range1978);
                            int alt36 = 2;
                            int LA36_0 = this.input.LA(1);
                            if (LA36_0 == 204) {
                                alt36 = 1;
                            }

                            switch (alt36) {
                                case 1:
                                    endReg = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_register_range1982);
                            }
                        default:
                            this.match(this.input, 3, (BitSet)null);
                    }
                }

                if (startReg == null) {
                    retval.startRegister = 0;
                    retval.endRegister = -1;
                } else {
                    retval.startRegister = this.parseRegister_short(startReg != null ? startReg.getText() : null);
                    if (endReg == null) {
                        retval.endRegister = retval.startRegister;
                    } else {
                        retval.endRegister = this.parseRegister_short(endReg != null ? endReg.getText() : null);
                    }

                    registerCount = retval.endRegister - retval.startRegister + 1;
                    if (registerCount < 1) {
                        throw new SemanticException(this.input, I_REGISTER_RANGE111, "A register range must have the lower register listed first", new Object[0]);
                    }
                }
            } catch (RecognitionException var12) {
                RecognitionException re = var12;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return retval;
        } finally {
            ;
        }
    }

    public final ImmutableReference verification_error_reference() throws RecognitionException {
        ImmutableReference reference = null;
        CommonTree CLASS_DESCRIPTOR112 = null;
        TreeRuleReturnScope field_reference113 = null;
        ImmutableMethodReference method_reference114 = null;

        try {
            try {
                int alt38 = 0;
                int LA38_3;
                int nvaeMark;
                NoViableAltException nvae;
                switch (this.input.LA(1)) {
                    case 8:
                        LA38_3 = this.input.LA(2);
                        int nvaeConsume;
                        if (LA38_3 == 202) {
                            LA38_3 = this.input.LA(3);
                            if (LA38_3 != 208) {
                                nvaeMark = this.input.mark();

                                try {
                                    for(nvaeMark = 0; nvaeMark < 2; ++nvaeMark) {
                                        this.input.consume();
                                    }

                                    nvae = new NoViableAltException("", 38, 5, this.input);
                                    throw nvae;
                                } finally {
                                    this.input.rewind(nvaeMark);
                                }
                            }

                            nvaeMark = this.input.LA(4);
                            if (nvaeMark != 8 && nvaeMark != 16 && nvaeMark != 202) {
                                if (nvaeMark != 128) {
                                    nvaeMark = this.input.mark();

                                    try {
                                        for(nvaeConsume = 0; nvaeConsume < 3; ++nvaeConsume) {
                                            this.input.consume();
                                        }

                                        nvae = new NoViableAltException("", 38, 3, this.input);
                                        throw nvae;
                                    } finally {
                                        this.input.rewind(nvaeMark);
                                    }
                                }

                                alt38 = 3;
                                break;
                            }

                            alt38 = 2;
                        } else {
                            if (LA38_3 != 16) {
                                LA38_3 = this.input.mark();

                                try {
                                    this.input.consume();
                                    nvae = new NoViableAltException("", 38, 2, this.input);
                                    throw nvae;
                                } finally {
                                    this.input.rewind(LA38_3);
                                }
                            }

                            LA38_3 = this.input.LA(3);
                            if (LA38_3 != 208) {
                                nvaeMark = this.input.mark();

                                try {
                                    for(nvaeMark = 0; nvaeMark < 2; ++nvaeMark) {
                                        this.input.consume();
                                    }

                                    nvae = new NoViableAltException("", 38, 6, this.input);
                                    throw nvae;
                                } finally {
                                    this.input.rewind(nvaeMark);
                                }
                            }

                            nvaeMark = this.input.LA(4);
                            if (nvaeMark != 8 && nvaeMark != 16 && nvaeMark != 202) {
                                if (nvaeMark != 128) {
                                    nvaeMark = this.input.mark();

                                    try {
                                        for(nvaeConsume = 0; nvaeConsume < 3; ++nvaeConsume) {
                                            this.input.consume();
                                        }

                                        nvae = new NoViableAltException("", 38, 3, this.input);
                                        throw nvae;
                                    } finally {
                                        this.input.rewind(nvaeMark);
                                    }
                                }

                                alt38 = 3;
                                break;
                            }

                            alt38 = 2;
                        }
                        break;
                    case 16:
                        LA38_3 = this.input.LA(2);
                        if (LA38_3 == 3) {
                            alt38 = 1;
                        } else {
                            if (LA38_3 != 208) {
                                LA38_3 = this.input.mark();

                                try {
                                    this.input.consume();
                                    nvae = new NoViableAltException("", 38, 1, this.input);
                                    throw nvae;
                                } finally {
                                    this.input.rewind(LA38_3);
                                }
                            }

                            LA38_3 = this.input.LA(3);
                            if (LA38_3 != 8 && LA38_3 != 16 && LA38_3 != 202) {
                                if (LA38_3 != 128) {
                                    nvaeMark = this.input.mark();

                                    try {
                                        for(nvaeMark = 0; nvaeMark < 2; ++nvaeMark) {
                                            this.input.consume();
                                        }

                                        nvae = new NoViableAltException("", 38, 3, this.input);
                                        throw nvae;
                                    } finally {
                                        this.input.rewind(nvaeMark);
                                    }
                                }

                                alt38 = 3;
                                break;
                            }

                            alt38 = 2;
                        }
                        break;
                    case 208:
                        LA38_3 = this.input.LA(2);
                        if (LA38_3 != 8 && LA38_3 != 16 && LA38_3 != 202) {
                            if (LA38_3 != 128) {
                                LA38_3 = this.input.mark();

                                try {
                                    this.input.consume();
                                    nvae = new NoViableAltException("", 38, 3, this.input);
                                    throw nvae;
                                } finally {
                                    this.input.rewind(LA38_3);
                                }
                            }

                            alt38 = 3;
                            break;
                        }

                        alt38 = 2;
                        break;
                    default:
                        nvae = new NoViableAltException("", 38, 0, this.input);
                        throw nvae;
                }

                switch (alt38) {
                    case 1:
                        CLASS_DESCRIPTOR112 = (CommonTree)this.match(this.input, 16, FOLLOW_CLASS_DESCRIPTOR_in_verification_error_reference2005);
                        reference = new ImmutableTypeReference(CLASS_DESCRIPTOR112 != null ? CLASS_DESCRIPTOR112.getText() : null);
                        break;
                    case 2:
                        this.pushFollow(FOLLOW_field_reference_in_verification_error_reference2015);
                        field_reference113 = this.field_reference();
                        --this.state._fsp;
                        reference = field_reference113 != null ? ((field_reference_return)field_reference113).fieldReference : null;
                        break;
                    case 3:
                        this.pushFollow(FOLLOW_method_reference_in_verification_error_reference2025);
                        method_reference114 = this.method_reference();
                        --this.state._fsp;
                        reference = method_reference114;
                }
            } catch (RecognitionException var117) {
                RecognitionException re = var117;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return (ImmutableReference)reference;
        } finally {
            ;
        }
    }

    public final int verification_error_type() throws RecognitionException {
        int verificationError = 0;
        CommonTree VERIFICATION_ERROR_TYPE115 = null;

        try {
            try {
                VERIFICATION_ERROR_TYPE115 = (CommonTree)this.match(this.input, 214, FOLLOW_VERIFICATION_ERROR_TYPE_in_verification_error_type2042);
                verificationError = VerificationError.getVerificationError(VERIFICATION_ERROR_TYPE115 != null ? VERIFICATION_ERROR_TYPE115.getText() : null);
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return verificationError;
        } finally {
            ;
        }
    }

    public final instruction_return instruction() throws RecognitionException {
        instruction_return retval = new instruction_return();
        retval.start = this.input.LT(1);

        try {
            try {
                int alt39 = 0;
                switch (this.input.LA(1)) {
                    case 143:
                        alt39 = 38;
                        break;
                    case 144:
                        alt39 = 1;
                        break;
                    case 145:
                        alt39 = 2;
                        break;
                    case 146:
                        alt39 = 3;
                        break;
                    case 147:
                        alt39 = 4;
                        break;
                    case 148:
                        alt39 = 5;
                        break;
                    case 149:
                        alt39 = 6;
                        break;
                    case 150:
                        alt39 = 7;
                        break;
                    case 151:
                        alt39 = 8;
                        break;
                    case 152:
                        alt39 = 9;
                        break;
                    case 153:
                        alt39 = 10;
                        break;
                    case 154:
                        alt39 = 11;
                        break;
                    case 155:
                        alt39 = 12;
                        break;
                    case 156:
                        alt39 = 13;
                        break;
                    case 157:
                        alt39 = 14;
                        break;
                    case 158:
                        alt39 = 15;
                        break;
                    case 159:
                        alt39 = 16;
                        break;
                    case 160:
                        alt39 = 17;
                        break;
                    case 161:
                        alt39 = 18;
                        break;
                    case 162:
                        alt39 = 19;
                        break;
                    case 163:
                        alt39 = 20;
                        break;
                    case 164:
                        alt39 = 21;
                        break;
                    case 165:
                        alt39 = 22;
                        break;
                    case 166:
                        alt39 = 23;
                        break;
                    case 167:
                        alt39 = 24;
                        break;
                    case 168:
                        alt39 = 25;
                        break;
                    case 169:
                        alt39 = 26;
                        break;
                    case 170:
                        alt39 = 27;
                        break;
                    case 171:
                        alt39 = 28;
                        break;
                    case 172:
                        alt39 = 29;
                        break;
                    case 173:
                        alt39 = 30;
                        break;
                    case 174:
                        alt39 = 31;
                        break;
                    case 175:
                        alt39 = 32;
                        break;
                    case 176:
                        alt39 = 33;
                        break;
                    case 177:
                        alt39 = 34;
                        break;
                    case 178:
                        alt39 = 35;
                        break;
                    case 179:
                        alt39 = 36;
                        break;
                    case 180:
                        alt39 = 37;
                        break;
                    case 181:
                        alt39 = 39;
                        break;
                    case 182:
                        alt39 = 40;
                        break;
                    default:
                        NoViableAltException nvae = new NoViableAltException("", 39, 0, this.input);
                        throw nvae;
                }

                switch (alt39) {
                    case 1:
                        this.pushFollow(FOLLOW_insn_format10t_in_instruction2056);
                        this.insn_format10t();
                        --this.state._fsp;
                        break;
                    case 2:
                        this.pushFollow(FOLLOW_insn_format10x_in_instruction2062);
                        this.insn_format10x();
                        --this.state._fsp;
                        break;
                    case 3:
                        this.pushFollow(FOLLOW_insn_format11n_in_instruction2068);
                        this.insn_format11n();
                        --this.state._fsp;
                        break;
                    case 4:
                        this.pushFollow(FOLLOW_insn_format11x_in_instruction2074);
                        this.insn_format11x();
                        --this.state._fsp;
                        break;
                    case 5:
                        this.pushFollow(FOLLOW_insn_format12x_in_instruction2080);
                        this.insn_format12x();
                        --this.state._fsp;
                        break;
                    case 6:
                        this.pushFollow(FOLLOW_insn_format20bc_in_instruction2086);
                        this.insn_format20bc();
                        --this.state._fsp;
                        break;
                    case 7:
                        this.pushFollow(FOLLOW_insn_format20t_in_instruction2092);
                        this.insn_format20t();
                        --this.state._fsp;
                        break;
                    case 8:
                        this.pushFollow(FOLLOW_insn_format21c_field_in_instruction2098);
                        this.insn_format21c_field();
                        --this.state._fsp;
                        break;
                    case 9:
                        this.pushFollow(FOLLOW_insn_format21c_method_handle_in_instruction2104);
                        this.insn_format21c_method_handle();
                        --this.state._fsp;
                        break;
                    case 10:
                        this.pushFollow(FOLLOW_insn_format21c_method_type_in_instruction2110);
                        this.insn_format21c_method_type();
                        --this.state._fsp;
                        break;
                    case 11:
                        this.pushFollow(FOLLOW_insn_format21c_string_in_instruction2116);
                        this.insn_format21c_string();
                        --this.state._fsp;
                        break;
                    case 12:
                        this.pushFollow(FOLLOW_insn_format21c_type_in_instruction2122);
                        this.insn_format21c_type();
                        --this.state._fsp;
                        break;
                    case 13:
                        this.pushFollow(FOLLOW_insn_format21ih_in_instruction2128);
                        this.insn_format21ih();
                        --this.state._fsp;
                        break;
                    case 14:
                        this.pushFollow(FOLLOW_insn_format21lh_in_instruction2134);
                        this.insn_format21lh();
                        --this.state._fsp;
                        break;
                    case 15:
                        this.pushFollow(FOLLOW_insn_format21s_in_instruction2140);
                        this.insn_format21s();
                        --this.state._fsp;
                        break;
                    case 16:
                        this.pushFollow(FOLLOW_insn_format21t_in_instruction2146);
                        this.insn_format21t();
                        --this.state._fsp;
                        break;
                    case 17:
                        this.pushFollow(FOLLOW_insn_format22b_in_instruction2152);
                        this.insn_format22b();
                        --this.state._fsp;
                        break;
                    case 18:
                        this.pushFollow(FOLLOW_insn_format22c_field_in_instruction2158);
                        this.insn_format22c_field();
                        --this.state._fsp;
                        break;
                    case 19:
                        this.pushFollow(FOLLOW_insn_format22c_type_in_instruction2164);
                        this.insn_format22c_type();
                        --this.state._fsp;
                        break;
                    case 20:
                        this.pushFollow(FOLLOW_insn_format22s_in_instruction2170);
                        this.insn_format22s();
                        --this.state._fsp;
                        break;
                    case 21:
                        this.pushFollow(FOLLOW_insn_format22t_in_instruction2176);
                        this.insn_format22t();
                        --this.state._fsp;
                        break;
                    case 22:
                        this.pushFollow(FOLLOW_insn_format22x_in_instruction2182);
                        this.insn_format22x();
                        --this.state._fsp;
                        break;
                    case 23:
                        this.pushFollow(FOLLOW_insn_format23x_in_instruction2188);
                        this.insn_format23x();
                        --this.state._fsp;
                        break;
                    case 24:
                        this.pushFollow(FOLLOW_insn_format30t_in_instruction2194);
                        this.insn_format30t();
                        --this.state._fsp;
                        break;
                    case 25:
                        this.pushFollow(FOLLOW_insn_format31c_in_instruction2200);
                        this.insn_format31c();
                        --this.state._fsp;
                        break;
                    case 26:
                        this.pushFollow(FOLLOW_insn_format31i_in_instruction2206);
                        this.insn_format31i();
                        --this.state._fsp;
                        break;
                    case 27:
                        this.pushFollow(FOLLOW_insn_format31t_in_instruction2212);
                        this.insn_format31t();
                        --this.state._fsp;
                        break;
                    case 28:
                        this.pushFollow(FOLLOW_insn_format32x_in_instruction2218);
                        this.insn_format32x();
                        --this.state._fsp;
                        break;
                    case 29:
                        this.pushFollow(FOLLOW_insn_format35c_call_site_in_instruction2224);
                        this.insn_format35c_call_site();
                        --this.state._fsp;
                        break;
                    case 30:
                        this.pushFollow(FOLLOW_insn_format35c_method_in_instruction2230);
                        this.insn_format35c_method();
                        --this.state._fsp;
                        break;
                    case 31:
                        this.pushFollow(FOLLOW_insn_format35c_type_in_instruction2236);
                        this.insn_format35c_type();
                        --this.state._fsp;
                        break;
                    case 32:
                        this.pushFollow(FOLLOW_insn_format3rc_call_site_in_instruction2242);
                        this.insn_format3rc_call_site();
                        --this.state._fsp;
                        break;
                    case 33:
                        this.pushFollow(FOLLOW_insn_format3rc_method_in_instruction2248);
                        this.insn_format3rc_method();
                        --this.state._fsp;
                        break;
                    case 34:
                        this.pushFollow(FOLLOW_insn_format3rc_type_in_instruction2254);
                        this.insn_format3rc_type();
                        --this.state._fsp;
                        break;
                    case 35:
                        this.pushFollow(FOLLOW_insn_format45cc_method_in_instruction2260);
                        this.insn_format45cc_method();
                        --this.state._fsp;
                        break;
                    case 36:
                        this.pushFollow(FOLLOW_insn_format4rcc_method_in_instruction2266);
                        this.insn_format4rcc_method();
                        --this.state._fsp;
                        break;
                    case 37:
                        this.pushFollow(FOLLOW_insn_format51l_type_in_instruction2272);
                        this.insn_format51l_type();
                        --this.state._fsp;
                        break;
                    case 38:
                        this.pushFollow(FOLLOW_insn_array_data_directive_in_instruction2278);
                        this.insn_array_data_directive();
                        --this.state._fsp;
                        break;
                    case 39:
                        this.pushFollow(FOLLOW_insn_packed_switch_directive_in_instruction2284);
                        this.insn_packed_switch_directive();
                        --this.state._fsp;
                        break;
                    case 40:
                        this.pushFollow(FOLLOW_insn_sparse_switch_directive_in_instruction2290);
                        this.insn_sparse_switch_directive();
                        --this.state._fsp;
                }
            } catch (Exception var7) {
                Exception ex = var7;
                this.reportError(new SemanticException(this.input, (CommonTree)retval.start, ex.getMessage(), new Object[0]));
                this.recover(this.input, (RecognitionException)null);
            }

            return retval;
        } finally {
            ;
        }
    }

    public final void insn_format10t() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT10t116 = null;
        Label label_ref117 = null;

        try {
            try {
                this.match(this.input, 144, FOLLOW_I_STATEMENT_FORMAT10t_in_insn_format10t2314);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT10t116 = (CommonTree)this.match(this.input, 44, FOLLOW_INSTRUCTION_FORMAT10t_in_insn_format10t2316);
                this.pushFollow(FOLLOW_label_ref_in_insn_format10t2318);
                label_ref117 = this.label_ref();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT10t116 != null ? INSTRUCTION_FORMAT10t116.getText() : null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction10t(opcode, label_ref117));
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format10x() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT10x118 = null;

        try {
            try {
                this.match(this.input, 145, FOLLOW_I_STATEMENT_FORMAT10x_in_insn_format10x2341);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT10x118 = (CommonTree)this.match(this.input, 45, FOLLOW_INSTRUCTION_FORMAT10x_in_insn_format10x2343);
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT10x118 != null ? INSTRUCTION_FORMAT10x118.getText() : null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction10x(opcode));
            } catch (RecognitionException var6) {
                RecognitionException re = var6;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format11n() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT11n119 = null;
        CommonTree REGISTER120 = null;

        try {
            try {
                this.match(this.input, 146, FOLLOW_I_STATEMENT_FORMAT11n_in_insn_format11n2366);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT11n119 = (CommonTree)this.match(this.input, 47, FOLLOW_INSTRUCTION_FORMAT11n_in_insn_format11n2368);
                REGISTER120 = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format11n2370);
                this.pushFollow(FOLLOW_short_integral_literal_in_insn_format11n2372);
                short short_integral_literal121 = this.short_integral_literal();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT11n119 != null ? INSTRUCTION_FORMAT11n119.getText() : null);
                byte regA = this.parseRegister_nibble(REGISTER120 != null ? REGISTER120.getText() : null);
                short litB = short_integral_literal121;
                LiteralTools.checkNibble((long)litB);
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction11n(opcode, regA, litB));
            } catch (RecognitionException var10) {
                RecognitionException re = var10;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format11x() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT11x122 = null;
        CommonTree REGISTER123 = null;

        try {
            try {
                this.match(this.input, 147, FOLLOW_I_STATEMENT_FORMAT11x_in_insn_format11x2395);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT11x122 = (CommonTree)this.match(this.input, 48, FOLLOW_INSTRUCTION_FORMAT11x_in_insn_format11x2397);
                REGISTER123 = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format11x2399);
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT11x122 != null ? INSTRUCTION_FORMAT11x122.getText() : null);
                short regA = this.parseRegister_byte(REGISTER123 != null ? REGISTER123.getText() : null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction11x(opcode, regA));
            } catch (RecognitionException var8) {
                RecognitionException re = var8;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format12x() throws RecognitionException {
        CommonTree registerA = null;
        CommonTree registerB = null;
        CommonTree INSTRUCTION_FORMAT12x124 = null;

        try {
            try {
                this.match(this.input, 148, FOLLOW_I_STATEMENT_FORMAT12x_in_insn_format12x2422);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT12x124 = (CommonTree)this.match(this.input, 49, FOLLOW_INSTRUCTION_FORMAT12x_in_insn_format12x2424);
                registerA = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format12x2428);
                registerB = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format12x2432);
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT12x124 != null ? INSTRUCTION_FORMAT12x124.getText() : null);
                byte regA = this.parseRegister_nibble(registerA != null ? registerA.getText() : null);
                byte regB = this.parseRegister_nibble(registerB != null ? registerB.getText() : null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction12x(opcode, regA, regB));
            } catch (RecognitionException var10) {
                RecognitionException re = var10;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format20bc() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT20bc125 = null;
        ImmutableReference verification_error_reference127 = null;

        try {
            try {
                this.match(this.input, 149, FOLLOW_I_STATEMENT_FORMAT20bc_in_insn_format20bc2455);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT20bc125 = (CommonTree)this.match(this.input, 51, FOLLOW_INSTRUCTION_FORMAT20bc_in_insn_format20bc2457);
                this.pushFollow(FOLLOW_verification_error_type_in_insn_format20bc2459);
                int verification_error_type126 = this.verification_error_type();
                --this.state._fsp;
                this.pushFollow(FOLLOW_verification_error_reference_in_insn_format20bc2461);
                verification_error_reference127 = this.verification_error_reference();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT20bc125 != null ? INSTRUCTION_FORMAT20bc125.getText() : null);
                int verificationError = verification_error_type126;
                ImmutableReference referencedItem = verification_error_reference127;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction20bc(opcode, verificationError, this.dexBuilder.internReference(referencedItem)));
            } catch (RecognitionException var10) {
                RecognitionException re = var10;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format20t() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT20t128 = null;
        Label label_ref129 = null;

        try {
            try {
                this.match(this.input, 150, FOLLOW_I_STATEMENT_FORMAT20t_in_insn_format20t2484);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT20t128 = (CommonTree)this.match(this.input, 52, FOLLOW_INSTRUCTION_FORMAT20t_in_insn_format20t2486);
                this.pushFollow(FOLLOW_label_ref_in_insn_format20t2488);
                label_ref129 = this.label_ref();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT20t128 != null ? INSTRUCTION_FORMAT20t128.getText() : null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction20t(opcode, label_ref129));
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format21c_field() throws RecognitionException {
        CommonTree inst = null;
        CommonTree REGISTER130 = null;
        TreeRuleReturnScope field_reference131 = null;

        try {
            try {
                this.match(this.input, 151, FOLLOW_I_STATEMENT_FORMAT21c_FIELD_in_insn_format21c_field2511);
                this.match(this.input, 2, (BitSet)null);
                inst = (CommonTree)this.input.LT(1);
                if (this.input.LA(1) < 53 || this.input.LA(1) > 54) {
                    MismatchedSetException mse = new MismatchedSetException((BitSet)null, this.input);
                    throw mse;
                }

                this.input.consume();
                this.state.errorRecovery = false;
                REGISTER130 = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format21c_field2523);
                this.pushFollow(FOLLOW_field_reference_in_insn_format21c_field2525);
                field_reference131 = this.field_reference();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(inst != null ? inst.getText() : null);
                short regA = this.parseRegister_byte(REGISTER130 != null ? REGISTER130.getText() : null);
                ImmutableFieldReference fieldReference = field_reference131 != null ? ((field_reference_return)field_reference131).fieldReference : null;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction21c(opcode, regA, this.dexBuilder.internFieldReference(fieldReference)));
            } catch (RecognitionException var10) {
                RecognitionException re = var10;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format21c_method_handle() throws RecognitionException {
        CommonTree inst = null;
        CommonTree REGISTER132 = null;
        ImmutableMethodHandleReference method_handle_reference133 = null;

        try {
            try {
                this.match(this.input, 152, FOLLOW_I_STATEMENT_FORMAT21c_METHOD_HANDLE_in_insn_format21c_method_handle2548);
                this.match(this.input, 2, (BitSet)null);
                inst = (CommonTree)this.match(this.input, 55, FOLLOW_INSTRUCTION_FORMAT21c_METHOD_HANDLE_in_insn_format21c_method_handle2553);
                REGISTER132 = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format21c_method_handle2556);
                this.pushFollow(FOLLOW_method_handle_reference_in_insn_format21c_method_handle2558);
                method_handle_reference133 = this.method_handle_reference();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(inst != null ? inst.getText() : null);
                short regA = this.parseRegister_byte(REGISTER132 != null ? REGISTER132.getText() : null);
                ImmutableMethodHandleReference methodHandleReference = method_handle_reference133;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction21c(opcode, regA, this.dexBuilder.internMethodHandle(methodHandleReference)));
            } catch (RecognitionException var10) {
                RecognitionException re = var10;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format21c_method_type() throws RecognitionException {
        CommonTree inst = null;
        CommonTree REGISTER134 = null;
        ImmutableMethodProtoReference method_prototype135 = null;

        try {
            try {
                this.match(this.input, 153, FOLLOW_I_STATEMENT_FORMAT21c_METHOD_TYPE_in_insn_format21c_method_type2581);
                this.match(this.input, 2, (BitSet)null);
                inst = (CommonTree)this.match(this.input, 56, FOLLOW_INSTRUCTION_FORMAT21c_METHOD_TYPE_in_insn_format21c_method_type2586);
                REGISTER134 = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format21c_method_type2589);
                this.pushFollow(FOLLOW_method_prototype_in_insn_format21c_method_type2591);
                method_prototype135 = this.method_prototype();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(inst != null ? inst.getText() : null);
                short regA = this.parseRegister_byte(REGISTER134 != null ? REGISTER134.getText() : null);
                ImmutableMethodProtoReference methodProtoReference = method_prototype135;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction21c(opcode, regA, this.dexBuilder.internMethodProtoReference(methodProtoReference)));
            } catch (RecognitionException var10) {
                RecognitionException re = var10;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format21c_string() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT21c_STRING136 = null;
        CommonTree REGISTER137 = null;
        String string_literal138 = null;

        try {
            try {
                this.match(this.input, 154, FOLLOW_I_STATEMENT_FORMAT21c_STRING_in_insn_format21c_string2614);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT21c_STRING136 = (CommonTree)this.match(this.input, 57, FOLLOW_INSTRUCTION_FORMAT21c_STRING_in_insn_format21c_string2616);
                REGISTER137 = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format21c_string2618);
                this.pushFollow(FOLLOW_string_literal_in_insn_format21c_string2620);
                string_literal138 = this.string_literal();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT21c_STRING136 != null ? INSTRUCTION_FORMAT21c_STRING136.getText() : null);
                short regA = this.parseRegister_byte(REGISTER137 != null ? REGISTER137.getText() : null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction21c(opcode, regA, this.dexBuilder.internStringReference(string_literal138)));
            } catch (RecognitionException var9) {
                RecognitionException re = var9;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format21c_type() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT21c_TYPE139 = null;
        CommonTree REGISTER140 = null;
        TreeRuleReturnScope nonvoid_type_descriptor141 = null;

        try {
            try {
                this.match(this.input, 155, FOLLOW_I_STATEMENT_FORMAT21c_TYPE_in_insn_format21c_type2643);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT21c_TYPE139 = (CommonTree)this.match(this.input, 58, FOLLOW_INSTRUCTION_FORMAT21c_TYPE_in_insn_format21c_type2645);
                REGISTER140 = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format21c_type2647);
                this.pushFollow(FOLLOW_nonvoid_type_descriptor_in_insn_format21c_type2649);
                nonvoid_type_descriptor141 = this.nonvoid_type_descriptor();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT21c_TYPE139 != null ? INSTRUCTION_FORMAT21c_TYPE139.getText() : null);
                short regA = this.parseRegister_byte(REGISTER140 != null ? REGISTER140.getText() : null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction21c(opcode, regA, this.dexBuilder.internTypeReference(nonvoid_type_descriptor141 != null ? ((nonvoid_type_descriptor_return)nonvoid_type_descriptor141).type : null)));
            } catch (RecognitionException var9) {
                RecognitionException re = var9;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format21ih() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT21ih142 = null;
        CommonTree REGISTER143 = null;

        try {
            try {
                this.match(this.input, 156, FOLLOW_I_STATEMENT_FORMAT21ih_in_insn_format21ih2672);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT21ih142 = (CommonTree)this.match(this.input, 59, FOLLOW_INSTRUCTION_FORMAT21ih_in_insn_format21ih2674);
                REGISTER143 = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format21ih2676);
                this.pushFollow(FOLLOW_fixed_32bit_literal_in_insn_format21ih2678);
                int fixed_32bit_literal144 = this.fixed_32bit_literal();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT21ih142 != null ? INSTRUCTION_FORMAT21ih142.getText() : null);
                short regA = this.parseRegister_byte(REGISTER143 != null ? REGISTER143.getText() : null);
                int litB = fixed_32bit_literal144;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction21ih(opcode, regA, litB));
            } catch (RecognitionException var10) {
                RecognitionException re = var10;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format21lh() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT21lh145 = null;
        CommonTree REGISTER146 = null;
        long fixed_64bit_literal147 = 0L;

        try {
            try {
                this.match(this.input, 157, FOLLOW_I_STATEMENT_FORMAT21lh_in_insn_format21lh2701);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT21lh145 = (CommonTree)this.match(this.input, 60, FOLLOW_INSTRUCTION_FORMAT21lh_in_insn_format21lh2703);
                REGISTER146 = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format21lh2705);
                this.pushFollow(FOLLOW_fixed_64bit_literal_in_insn_format21lh2707);
                fixed_64bit_literal147 = this.fixed_64bit_literal();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT21lh145 != null ? INSTRUCTION_FORMAT21lh145.getText() : null);
                short regA = this.parseRegister_byte(REGISTER146 != null ? REGISTER146.getText() : null);
                long litB = fixed_64bit_literal147;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction21lh(opcode, regA, litB));
            } catch (RecognitionException var12) {
                RecognitionException re = var12;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format21s() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT21s148 = null;
        CommonTree REGISTER149 = null;

        try {
            try {
                this.match(this.input, 158, FOLLOW_I_STATEMENT_FORMAT21s_in_insn_format21s2730);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT21s148 = (CommonTree)this.match(this.input, 61, FOLLOW_INSTRUCTION_FORMAT21s_in_insn_format21s2732);
                REGISTER149 = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format21s2734);
                this.pushFollow(FOLLOW_short_integral_literal_in_insn_format21s2736);
                short short_integral_literal150 = this.short_integral_literal();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT21s148 != null ? INSTRUCTION_FORMAT21s148.getText() : null);
                short regA = this.parseRegister_byte(REGISTER149 != null ? REGISTER149.getText() : null);
                short litB = short_integral_literal150;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction21s(opcode, regA, litB));
            } catch (RecognitionException var10) {
                RecognitionException re = var10;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format21t() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT21t151 = null;
        CommonTree REGISTER152 = null;
        Label label_ref153 = null;

        try {
            try {
                this.match(this.input, 159, FOLLOW_I_STATEMENT_FORMAT21t_in_insn_format21t2759);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT21t151 = (CommonTree)this.match(this.input, 62, FOLLOW_INSTRUCTION_FORMAT21t_in_insn_format21t2761);
                REGISTER152 = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format21t2763);
                this.pushFollow(FOLLOW_label_ref_in_insn_format21t2765);
                label_ref153 = this.label_ref();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT21t151 != null ? INSTRUCTION_FORMAT21t151.getText() : null);
                short regA = this.parseRegister_byte(REGISTER152 != null ? REGISTER152.getText() : null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction21t(opcode, regA, label_ref153));
            } catch (RecognitionException var9) {
                RecognitionException re = var9;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format22b() throws RecognitionException {
        CommonTree registerA = null;
        CommonTree registerB = null;
        CommonTree INSTRUCTION_FORMAT22b154 = null;

        try {
            try {
                this.match(this.input, 160, FOLLOW_I_STATEMENT_FORMAT22b_in_insn_format22b2788);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT22b154 = (CommonTree)this.match(this.input, 63, FOLLOW_INSTRUCTION_FORMAT22b_in_insn_format22b2790);
                registerA = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format22b2794);
                registerB = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format22b2798);
                this.pushFollow(FOLLOW_short_integral_literal_in_insn_format22b2800);
                short short_integral_literal155 = this.short_integral_literal();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT22b154 != null ? INSTRUCTION_FORMAT22b154.getText() : null);
                short regA = this.parseRegister_byte(registerA != null ? registerA.getText() : null);
                short regB = this.parseRegister_byte(registerB != null ? registerB.getText() : null);
                short litC = short_integral_literal155;
                LiteralTools.checkByte((long)litC);
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction22b(opcode, regA, regB, litC));
            } catch (RecognitionException var12) {
                RecognitionException re = var12;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format22c_field() throws RecognitionException {
        CommonTree inst = null;
        CommonTree registerA = null;
        CommonTree registerB = null;
        TreeRuleReturnScope field_reference156 = null;

        try {
            try {
                this.match(this.input, 161, FOLLOW_I_STATEMENT_FORMAT22c_FIELD_in_insn_format22c_field2823);
                this.match(this.input, 2, (BitSet)null);
                inst = (CommonTree)this.input.LT(1);
                if (this.input.LA(1) < 64 || this.input.LA(1) > 65) {
                    MismatchedSetException mse = new MismatchedSetException((BitSet)null, this.input);
                    throw mse;
                }

                this.input.consume();
                this.state.errorRecovery = false;
                registerA = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format22c_field2837);
                registerB = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format22c_field2841);
                this.pushFollow(FOLLOW_field_reference_in_insn_format22c_field2843);
                field_reference156 = this.field_reference();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(inst != null ? inst.getText() : null);
                byte regA = this.parseRegister_nibble(registerA != null ? registerA.getText() : null);
                byte regB = this.parseRegister_nibble(registerB != null ? registerB.getText() : null);
                ImmutableFieldReference fieldReference = field_reference156 != null ? ((field_reference_return)field_reference156).fieldReference : null;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction22c(opcode, regA, regB, this.dexBuilder.internFieldReference(fieldReference)));
            } catch (RecognitionException var12) {
                RecognitionException re = var12;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format22c_type() throws RecognitionException {
        CommonTree registerA = null;
        CommonTree registerB = null;
        CommonTree INSTRUCTION_FORMAT22c_TYPE157 = null;
        TreeRuleReturnScope nonvoid_type_descriptor158 = null;

        try {
            try {
                this.match(this.input, 162, FOLLOW_I_STATEMENT_FORMAT22c_TYPE_in_insn_format22c_type2866);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT22c_TYPE157 = (CommonTree)this.match(this.input, 66, FOLLOW_INSTRUCTION_FORMAT22c_TYPE_in_insn_format22c_type2868);
                registerA = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format22c_type2872);
                registerB = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format22c_type2876);
                this.pushFollow(FOLLOW_nonvoid_type_descriptor_in_insn_format22c_type2878);
                nonvoid_type_descriptor158 = this.nonvoid_type_descriptor();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT22c_TYPE157 != null ? INSTRUCTION_FORMAT22c_TYPE157.getText() : null);
                byte regA = this.parseRegister_nibble(registerA != null ? registerA.getText() : null);
                byte regB = this.parseRegister_nibble(registerB != null ? registerB.getText() : null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction22c(opcode, regA, regB, this.dexBuilder.internTypeReference(nonvoid_type_descriptor158 != null ? ((nonvoid_type_descriptor_return)nonvoid_type_descriptor158).type : null)));
            } catch (RecognitionException var11) {
                RecognitionException re = var11;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format22s() throws RecognitionException {
        CommonTree registerA = null;
        CommonTree registerB = null;
        CommonTree INSTRUCTION_FORMAT22s159 = null;

        try {
            try {
                this.match(this.input, 163, FOLLOW_I_STATEMENT_FORMAT22s_in_insn_format22s2901);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT22s159 = (CommonTree)this.match(this.input, 68, FOLLOW_INSTRUCTION_FORMAT22s_in_insn_format22s2903);
                registerA = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format22s2907);
                registerB = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format22s2911);
                this.pushFollow(FOLLOW_short_integral_literal_in_insn_format22s2913);
                short short_integral_literal160 = this.short_integral_literal();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT22s159 != null ? INSTRUCTION_FORMAT22s159.getText() : null);
                byte regA = this.parseRegister_nibble(registerA != null ? registerA.getText() : null);
                byte regB = this.parseRegister_nibble(registerB != null ? registerB.getText() : null);
                short litC = short_integral_literal160;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction22s(opcode, regA, regB, litC));
            } catch (RecognitionException var12) {
                RecognitionException re = var12;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format22t() throws RecognitionException {
        CommonTree registerA = null;
        CommonTree registerB = null;
        CommonTree INSTRUCTION_FORMAT22t161 = null;
        Label label_ref162 = null;

        try {
            try {
                this.match(this.input, 164, FOLLOW_I_STATEMENT_FORMAT22t_in_insn_format22t2936);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT22t161 = (CommonTree)this.match(this.input, 70, FOLLOW_INSTRUCTION_FORMAT22t_in_insn_format22t2938);
                registerA = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format22t2942);
                registerB = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format22t2946);
                this.pushFollow(FOLLOW_label_ref_in_insn_format22t2948);
                label_ref162 = this.label_ref();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT22t161 != null ? INSTRUCTION_FORMAT22t161.getText() : null);
                byte regA = this.parseRegister_nibble(registerA != null ? registerA.getText() : null);
                byte regB = this.parseRegister_nibble(registerB != null ? registerB.getText() : null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction22t(opcode, regA, regB, label_ref162));
            } catch (RecognitionException var11) {
                RecognitionException re = var11;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format22x() throws RecognitionException {
        CommonTree registerA = null;
        CommonTree registerB = null;
        CommonTree INSTRUCTION_FORMAT22x163 = null;

        try {
            try {
                this.match(this.input, 165, FOLLOW_I_STATEMENT_FORMAT22x_in_insn_format22x2971);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT22x163 = (CommonTree)this.match(this.input, 71, FOLLOW_INSTRUCTION_FORMAT22x_in_insn_format22x2973);
                registerA = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format22x2977);
                registerB = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format22x2981);
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT22x163 != null ? INSTRUCTION_FORMAT22x163.getText() : null);
                short regA = this.parseRegister_byte(registerA != null ? registerA.getText() : null);
                int regB = this.parseRegister_short(registerB != null ? registerB.getText() : null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction22x(opcode, regA, regB));
            } catch (RecognitionException var10) {
                RecognitionException re = var10;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format23x() throws RecognitionException {
        CommonTree registerA = null;
        CommonTree registerB = null;
        CommonTree registerC = null;
        CommonTree INSTRUCTION_FORMAT23x164 = null;

        try {
            try {
                this.match(this.input, 166, FOLLOW_I_STATEMENT_FORMAT23x_in_insn_format23x3004);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT23x164 = (CommonTree)this.match(this.input, 72, FOLLOW_INSTRUCTION_FORMAT23x_in_insn_format23x3006);
                registerA = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format23x3010);
                registerB = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format23x3014);
                registerC = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format23x3018);
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT23x164 != null ? INSTRUCTION_FORMAT23x164.getText() : null);
                short regA = this.parseRegister_byte(registerA != null ? registerA.getText() : null);
                short regB = this.parseRegister_byte(registerB != null ? registerB.getText() : null);
                short regC = this.parseRegister_byte(registerC != null ? registerC.getText() : null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction23x(opcode, regA, regB, regC));
            } catch (RecognitionException var12) {
                RecognitionException re = var12;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format30t() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT30t165 = null;
        Label label_ref166 = null;

        try {
            try {
                this.match(this.input, 167, FOLLOW_I_STATEMENT_FORMAT30t_in_insn_format30t3041);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT30t165 = (CommonTree)this.match(this.input, 73, FOLLOW_INSTRUCTION_FORMAT30t_in_insn_format30t3043);
                this.pushFollow(FOLLOW_label_ref_in_insn_format30t3045);
                label_ref166 = this.label_ref();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT30t165 != null ? INSTRUCTION_FORMAT30t165.getText() : null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction30t(opcode, label_ref166));
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format31c() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT31c167 = null;
        CommonTree REGISTER168 = null;
        String string_literal169 = null;

        try {
            try {
                this.match(this.input, 168, FOLLOW_I_STATEMENT_FORMAT31c_in_insn_format31c3068);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT31c167 = (CommonTree)this.match(this.input, 74, FOLLOW_INSTRUCTION_FORMAT31c_in_insn_format31c3070);
                REGISTER168 = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format31c3072);
                this.pushFollow(FOLLOW_string_literal_in_insn_format31c3074);
                string_literal169 = this.string_literal();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT31c167 != null ? INSTRUCTION_FORMAT31c167.getText() : null);
                short regA = this.parseRegister_byte(REGISTER168 != null ? REGISTER168.getText() : null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction31c(opcode, regA, this.dexBuilder.internStringReference(string_literal169)));
            } catch (RecognitionException var9) {
                RecognitionException re = var9;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format31i() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT31i170 = null;
        CommonTree REGISTER171 = null;

        try {
            try {
                this.match(this.input, 169, FOLLOW_I_STATEMENT_FORMAT31i_in_insn_format31i3097);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT31i170 = (CommonTree)this.match(this.input, 75, FOLLOW_INSTRUCTION_FORMAT31i_in_insn_format31i3099);
                REGISTER171 = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format31i3101);
                this.pushFollow(FOLLOW_fixed_32bit_literal_in_insn_format31i3103);
                int fixed_32bit_literal172 = this.fixed_32bit_literal();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT31i170 != null ? INSTRUCTION_FORMAT31i170.getText() : null);
                short regA = this.parseRegister_byte(REGISTER171 != null ? REGISTER171.getText() : null);
                int litB = fixed_32bit_literal172;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction31i(opcode, regA, litB));
            } catch (RecognitionException var10) {
                RecognitionException re = var10;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format31t() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT31t173 = null;
        CommonTree REGISTER174 = null;
        Label label_ref175 = null;

        try {
            try {
                this.match(this.input, 170, FOLLOW_I_STATEMENT_FORMAT31t_in_insn_format31t3126);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT31t173 = (CommonTree)this.match(this.input, 77, FOLLOW_INSTRUCTION_FORMAT31t_in_insn_format31t3128);
                REGISTER174 = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format31t3130);
                this.pushFollow(FOLLOW_label_ref_in_insn_format31t3132);
                label_ref175 = this.label_ref();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT31t173 != null ? INSTRUCTION_FORMAT31t173.getText() : null);
                short regA = this.parseRegister_byte(REGISTER174 != null ? REGISTER174.getText() : null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction31t(opcode, regA, label_ref175));
            } catch (RecognitionException var9) {
                RecognitionException re = var9;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format32x() throws RecognitionException {
        CommonTree registerA = null;
        CommonTree registerB = null;
        CommonTree INSTRUCTION_FORMAT32x176 = null;

        try {
            try {
                this.match(this.input, 171, FOLLOW_I_STATEMENT_FORMAT32x_in_insn_format32x3155);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT32x176 = (CommonTree)this.match(this.input, 78, FOLLOW_INSTRUCTION_FORMAT32x_in_insn_format32x3157);
                registerA = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format32x3161);
                registerB = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format32x3165);
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT32x176 != null ? INSTRUCTION_FORMAT32x176.getText() : null);
                int regA = this.parseRegister_short(registerA != null ? registerA.getText() : null);
                int regB = this.parseRegister_short(registerB != null ? registerB.getText() : null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction32x(opcode, regA, regB));
            } catch (RecognitionException var10) {
                RecognitionException re = var10;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format35c_call_site() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT35c_CALL_SITE177 = null;
        TreeRuleReturnScope register_list178 = null;
        ImmutableCallSiteReference call_site_reference179 = null;

        try {
            try {
                this.match(this.input, 172, FOLLOW_I_STATEMENT_FORMAT35c_CALL_SITE_in_insn_format35c_call_site3193);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT35c_CALL_SITE177 = (CommonTree)this.match(this.input, 79, FOLLOW_INSTRUCTION_FORMAT35c_CALL_SITE_in_insn_format35c_call_site3195);
                this.pushFollow(FOLLOW_register_list_in_insn_format35c_call_site3197);
                register_list178 = this.register_list();
                --this.state._fsp;
                this.pushFollow(FOLLOW_call_site_reference_in_insn_format35c_call_site3199);
                call_site_reference179 = this.call_site_reference();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT35c_CALL_SITE177 != null ? INSTRUCTION_FORMAT35c_CALL_SITE177.getText() : null);
                byte[] registers = register_list178 != null ? ((register_list_return)register_list178).registers : null;
                byte registerCount = register_list178 != null ? ((register_list_return)register_list178).registerCount : 0;
                ImmutableCallSiteReference callSiteReference = call_site_reference179;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction35c(opcode, registerCount, registers[0], registers[1], registers[2], registers[3], registers[4], this.dexBuilder.internCallSite(callSiteReference)));
            } catch (RecognitionException var11) {
                RecognitionException re = var11;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format35c_method() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT35c_METHOD180 = null;
        TreeRuleReturnScope register_list181 = null;
        ImmutableMethodReference method_reference182 = null;

        try {
            try {
                this.match(this.input, 173, FOLLOW_I_STATEMENT_FORMAT35c_METHOD_in_insn_format35c_method3222);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT35c_METHOD180 = (CommonTree)this.match(this.input, 80, FOLLOW_INSTRUCTION_FORMAT35c_METHOD_in_insn_format35c_method3224);
                this.pushFollow(FOLLOW_register_list_in_insn_format35c_method3226);
                register_list181 = this.register_list();
                --this.state._fsp;
                this.pushFollow(FOLLOW_method_reference_in_insn_format35c_method3228);
                method_reference182 = this.method_reference();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT35c_METHOD180 != null ? INSTRUCTION_FORMAT35c_METHOD180.getText() : null);
                byte[] registers = register_list181 != null ? ((register_list_return)register_list181).registers : null;
                byte registerCount = register_list181 != null ? ((register_list_return)register_list181).registerCount : 0;
                ImmutableMethodReference methodReference = method_reference182;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction35c(opcode, registerCount, registers[0], registers[1], registers[2], registers[3], registers[4], this.dexBuilder.internMethodReference(methodReference)));
            } catch (RecognitionException var11) {
                RecognitionException re = var11;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format35c_type() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT35c_TYPE183 = null;
        TreeRuleReturnScope register_list184 = null;
        TreeRuleReturnScope nonvoid_type_descriptor185 = null;

        try {
            try {
                this.match(this.input, 174, FOLLOW_I_STATEMENT_FORMAT35c_TYPE_in_insn_format35c_type3251);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT35c_TYPE183 = (CommonTree)this.match(this.input, 83, FOLLOW_INSTRUCTION_FORMAT35c_TYPE_in_insn_format35c_type3253);
                this.pushFollow(FOLLOW_register_list_in_insn_format35c_type3255);
                register_list184 = this.register_list();
                --this.state._fsp;
                this.pushFollow(FOLLOW_nonvoid_type_descriptor_in_insn_format35c_type3257);
                nonvoid_type_descriptor185 = this.nonvoid_type_descriptor();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT35c_TYPE183 != null ? INSTRUCTION_FORMAT35c_TYPE183.getText() : null);
                byte[] registers = register_list184 != null ? ((register_list_return)register_list184).registers : null;
                byte registerCount = register_list184 != null ? ((register_list_return)register_list184).registerCount : 0;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction35c(opcode, registerCount, registers[0], registers[1], registers[2], registers[3], registers[4], this.dexBuilder.internTypeReference(nonvoid_type_descriptor185 != null ? ((nonvoid_type_descriptor_return)nonvoid_type_descriptor185).type : null)));
            } catch (RecognitionException var10) {
                RecognitionException re = var10;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format3rc_call_site() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT3rc_CALL_SITE186 = null;
        TreeRuleReturnScope register_range187 = null;
        ImmutableCallSiteReference call_site_reference188 = null;

        try {
            try {
                this.match(this.input, 175, FOLLOW_I_STATEMENT_FORMAT3rc_CALL_SITE_in_insn_format3rc_call_site3285);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT3rc_CALL_SITE186 = (CommonTree)this.match(this.input, 86, FOLLOW_INSTRUCTION_FORMAT3rc_CALL_SITE_in_insn_format3rc_call_site3287);
                this.pushFollow(FOLLOW_register_range_in_insn_format3rc_call_site3289);
                register_range187 = this.register_range();
                --this.state._fsp;
                this.pushFollow(FOLLOW_call_site_reference_in_insn_format3rc_call_site3291);
                call_site_reference188 = this.call_site_reference();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT3rc_CALL_SITE186 != null ? INSTRUCTION_FORMAT3rc_CALL_SITE186.getText() : null);
                int startRegister = register_range187 != null ? ((register_range_return)register_range187).startRegister : 0;
                int endRegister = register_range187 != null ? ((register_range_return)register_range187).endRegister : 0;
                int registerCount = endRegister - startRegister + 1;
                ImmutableCallSiteReference callSiteReference = call_site_reference188;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction3rc(opcode, startRegister, registerCount, this.dexBuilder.internCallSite(callSiteReference)));
            } catch (RecognitionException var12) {
                RecognitionException re = var12;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format3rc_method() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT3rc_METHOD189 = null;
        TreeRuleReturnScope register_range190 = null;
        ImmutableMethodReference method_reference191 = null;

        try {
            try {
                this.match(this.input, 176, FOLLOW_I_STATEMENT_FORMAT3rc_METHOD_in_insn_format3rc_method3314);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT3rc_METHOD189 = (CommonTree)this.match(this.input, 87, FOLLOW_INSTRUCTION_FORMAT3rc_METHOD_in_insn_format3rc_method3316);
                this.pushFollow(FOLLOW_register_range_in_insn_format3rc_method3318);
                register_range190 = this.register_range();
                --this.state._fsp;
                this.pushFollow(FOLLOW_method_reference_in_insn_format3rc_method3320);
                method_reference191 = this.method_reference();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT3rc_METHOD189 != null ? INSTRUCTION_FORMAT3rc_METHOD189.getText() : null);
                int startRegister = register_range190 != null ? ((register_range_return)register_range190).startRegister : 0;
                int endRegister = register_range190 != null ? ((register_range_return)register_range190).endRegister : 0;
                int registerCount = endRegister - startRegister + 1;
                ImmutableMethodReference methodReference = method_reference191;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction3rc(opcode, startRegister, registerCount, this.dexBuilder.internMethodReference(methodReference)));
            } catch (RecognitionException var12) {
                RecognitionException re = var12;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format3rc_type() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT3rc_TYPE192 = null;
        TreeRuleReturnScope register_range193 = null;
        TreeRuleReturnScope nonvoid_type_descriptor194 = null;

        try {
            try {
                this.match(this.input, 177, FOLLOW_I_STATEMENT_FORMAT3rc_TYPE_in_insn_format3rc_type3343);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT3rc_TYPE192 = (CommonTree)this.match(this.input, 89, FOLLOW_INSTRUCTION_FORMAT3rc_TYPE_in_insn_format3rc_type3345);
                this.pushFollow(FOLLOW_register_range_in_insn_format3rc_type3347);
                register_range193 = this.register_range();
                --this.state._fsp;
                this.pushFollow(FOLLOW_nonvoid_type_descriptor_in_insn_format3rc_type3349);
                nonvoid_type_descriptor194 = this.nonvoid_type_descriptor();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT3rc_TYPE192 != null ? INSTRUCTION_FORMAT3rc_TYPE192.getText() : null);
                int startRegister = register_range193 != null ? ((register_range_return)register_range193).startRegister : 0;
                int endRegister = register_range193 != null ? ((register_range_return)register_range193).endRegister : 0;
                int registerCount = endRegister - startRegister + 1;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction3rc(opcode, startRegister, registerCount, this.dexBuilder.internTypeReference(nonvoid_type_descriptor194 != null ? ((nonvoid_type_descriptor_return)nonvoid_type_descriptor194).type : null)));
            } catch (RecognitionException var11) {
                RecognitionException re = var11;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format45cc_method() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT45cc_METHOD195 = null;
        TreeRuleReturnScope register_list196 = null;
        ImmutableMethodReference method_reference197 = null;
        ImmutableMethodProtoReference method_prototype198 = null;

        try {
            try {
                this.match(this.input, 178, FOLLOW_I_STATEMENT_FORMAT45cc_METHOD_in_insn_format45cc_method3372);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT45cc_METHOD195 = (CommonTree)this.match(this.input, 92, FOLLOW_INSTRUCTION_FORMAT45cc_METHOD_in_insn_format45cc_method3374);
                this.pushFollow(FOLLOW_register_list_in_insn_format45cc_method3376);
                register_list196 = this.register_list();
                --this.state._fsp;
                this.pushFollow(FOLLOW_method_reference_in_insn_format45cc_method3378);
                method_reference197 = this.method_reference();
                --this.state._fsp;
                this.pushFollow(FOLLOW_method_prototype_in_insn_format45cc_method3380);
                method_prototype198 = this.method_prototype();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT45cc_METHOD195 != null ? INSTRUCTION_FORMAT45cc_METHOD195.getText() : null);
                byte[] registers = register_list196 != null ? ((register_list_return)register_list196).registers : null;
                byte registerCount = register_list196 != null ? ((register_list_return)register_list196).registerCount : 0;
                ImmutableMethodReference methodReference = method_reference197;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction45cc(opcode, registerCount, registers[0], registers[1], registers[2], registers[3], registers[4], this.dexBuilder.internMethodReference(methodReference), this.dexBuilder.internMethodProtoReference(method_prototype198)));
            } catch (RecognitionException var12) {
                RecognitionException re = var12;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format4rcc_method() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT4rcc_METHOD199 = null;
        TreeRuleReturnScope register_range200 = null;
        ImmutableMethodReference method_reference201 = null;
        ImmutableMethodProtoReference method_prototype202 = null;

        try {
            try {
                this.match(this.input, 179, FOLLOW_I_STATEMENT_FORMAT4rcc_METHOD_in_insn_format4rcc_method3403);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT4rcc_METHOD199 = (CommonTree)this.match(this.input, 93, FOLLOW_INSTRUCTION_FORMAT4rcc_METHOD_in_insn_format4rcc_method3405);
                this.pushFollow(FOLLOW_register_range_in_insn_format4rcc_method3407);
                register_range200 = this.register_range();
                --this.state._fsp;
                this.pushFollow(FOLLOW_method_reference_in_insn_format4rcc_method3409);
                method_reference201 = this.method_reference();
                --this.state._fsp;
                this.pushFollow(FOLLOW_method_prototype_in_insn_format4rcc_method3411);
                method_prototype202 = this.method_prototype();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT4rcc_METHOD199 != null ? INSTRUCTION_FORMAT4rcc_METHOD199.getText() : null);
                int startRegister = register_range200 != null ? ((register_range_return)register_range200).startRegister : 0;
                int endRegister = register_range200 != null ? ((register_range_return)register_range200).endRegister : 0;
                int registerCount = endRegister - startRegister + 1;
                ImmutableMethodReference methodReference = method_reference201;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction4rcc(opcode, startRegister, registerCount, this.dexBuilder.internMethodReference(methodReference), this.dexBuilder.internMethodProtoReference(method_prototype202)));
            } catch (RecognitionException var13) {
                RecognitionException re = var13;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_format51l_type() throws RecognitionException {
        CommonTree INSTRUCTION_FORMAT51l203 = null;
        CommonTree REGISTER204 = null;
        long fixed_64bit_literal205 = 0L;

        try {
            try {
                this.match(this.input, 180, FOLLOW_I_STATEMENT_FORMAT51l_in_insn_format51l_type3434);
                this.match(this.input, 2, (BitSet)null);
                INSTRUCTION_FORMAT51l203 = (CommonTree)this.match(this.input, 94, FOLLOW_INSTRUCTION_FORMAT51l_in_insn_format51l_type3436);
                REGISTER204 = (CommonTree)this.match(this.input, 204, FOLLOW_REGISTER_in_insn_format51l_type3438);
                this.pushFollow(FOLLOW_fixed_64bit_literal_in_insn_format51l_type3440);
                fixed_64bit_literal205 = this.fixed_64bit_literal();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                Opcode opcode = this.opcodes.getOpcodeByName(INSTRUCTION_FORMAT51l203 != null ? INSTRUCTION_FORMAT51l203.getText() : null);
                short regA = this.parseRegister_byte(REGISTER204 != null ? REGISTER204.getText() : null);
                long litB = fixed_64bit_literal205;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderInstruction51l(opcode, regA, litB));
            } catch (RecognitionException var12) {
                RecognitionException re = var12;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_array_data_directive() throws RecognitionException {
        List<Number> array_elements207 = null;

        try {
            try {
                this.match(this.input, 143, FOLLOW_I_STATEMENT_ARRAY_DATA_in_insn_array_data_directive3463);
                this.match(this.input, 2, (BitSet)null);
                this.match(this.input, 103, FOLLOW_I_ARRAY_ELEMENT_SIZE_in_insn_array_data_directive3466);
                this.match(this.input, 2, (BitSet)null);
                this.pushFollow(FOLLOW_short_integral_literal_in_insn_array_data_directive3468);
                short short_integral_literal206 = this.short_integral_literal();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                this.pushFollow(FOLLOW_array_elements_in_insn_array_data_directive3471);
                array_elements207 = this.array_elements();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                int elementWidth = short_integral_literal206;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderArrayPayload(elementWidth, array_elements207));
            } catch (RecognitionException var8) {
                RecognitionException re = var8;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_packed_switch_directive() throws RecognitionException {
        List<Label> packed_switch_elements209 = null;

        try {
            try {
                this.match(this.input, 181, FOLLOW_I_STATEMENT_PACKED_SWITCH_in_insn_packed_switch_directive3493);
                this.match(this.input, 2, (BitSet)null);
                this.match(this.input, 132, FOLLOW_I_PACKED_SWITCH_START_KEY_in_insn_packed_switch_directive3496);
                this.match(this.input, 2, (BitSet)null);
                this.pushFollow(FOLLOW_fixed_32bit_literal_in_insn_packed_switch_directive3498);
                int fixed_32bit_literal208 = this.fixed_32bit_literal();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                this.pushFollow(FOLLOW_packed_switch_elements_in_insn_packed_switch_directive3501);
                packed_switch_elements209 = this.packed_switch_elements();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                int startKey = fixed_32bit_literal208;
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderPackedSwitchPayload(startKey, packed_switch_elements209));
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final void insn_sparse_switch_directive() throws RecognitionException {
        List<SwitchLabelElement> sparse_switch_elements210 = null;

        try {
            try {
                this.match(this.input, 182, FOLLOW_I_STATEMENT_SPARSE_SWITCH_in_insn_sparse_switch_directive3525);
                this.match(this.input, 2, (BitSet)null);
                this.pushFollow(FOLLOW_sparse_switch_elements_in_insn_sparse_switch_directive3527);
                sparse_switch_elements210 = this.sparse_switch_elements();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                ((method_scope)this.method_stack.peek()).methodBuilder.addInstruction(new BuilderSparseSwitchPayload(sparse_switch_elements210));
            } catch (RecognitionException var6) {
                RecognitionException re = var6;
                this.reportError(re);
                this.recover(this.input, re);
            }

        } finally {
            ;
        }
    }

    public final String array_descriptor() throws RecognitionException {
        String type = null;
        CommonTree ARRAY_TYPE_PREFIX211 = null;
        CommonTree PRIMITIVE_TYPE212 = null;
        CommonTree CLASS_DESCRIPTOR213 = null;

        try {
            try {
                ARRAY_TYPE_PREFIX211 = (CommonTree)this.match(this.input, 8, FOLLOW_ARRAY_TYPE_PREFIX_in_array_descriptor3548);
                int alt40 = 0;
                int LA40_0 = this.input.LA(1);
                if (LA40_0 == 202) {
                    alt40 = 1;
                } else {
                    if (LA40_0 != 16) {
                        NoViableAltException nvae = new NoViableAltException("", 40, 0, this.input);
                        throw nvae;
                    }

                    alt40 = 2;
                }

                switch (alt40) {
                    case 1:
                        PRIMITIVE_TYPE212 = (CommonTree)this.match(this.input, 202, FOLLOW_PRIMITIVE_TYPE_in_array_descriptor3552);
                        type = (ARRAY_TYPE_PREFIX211 != null ? ARRAY_TYPE_PREFIX211.getText() : null) + (PRIMITIVE_TYPE212 != null ? PRIMITIVE_TYPE212.getText() : null);
                        break;
                    case 2:
                        CLASS_DESCRIPTOR213 = (CommonTree)this.match(this.input, 16, FOLLOW_CLASS_DESCRIPTOR_in_array_descriptor3580);
                        type = (ARRAY_TYPE_PREFIX211 != null ? ARRAY_TYPE_PREFIX211.getText() : null) + (CLASS_DESCRIPTOR213 != null ? CLASS_DESCRIPTOR213.getText() : null);
                }
            } catch (RecognitionException var11) {
                RecognitionException re = var11;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return type;
        } finally {
            ;
        }
    }

    public final nonvoid_type_descriptor_return nonvoid_type_descriptor() throws RecognitionException {
        nonvoid_type_descriptor_return retval = new nonvoid_type_descriptor_return();
        retval.start = this.input.LT(1);
        String array_descriptor214 = null;

        try {
            try {
                int alt41 = 0;
                switch (this.input.LA(1)) {
                    case 8:
                        alt41 = 3;
                        break;
                    case 16:
                        alt41 = 2;
                        break;
                    case 202:
                        alt41 = 1;
                        break;
                    default:
                        NoViableAltException nvae = new NoViableAltException("", 41, 0, this.input);
                        throw nvae;
                }

                switch (alt41) {
                    case 1:
                        this.match(this.input, 202, FOLLOW_PRIMITIVE_TYPE_in_nonvoid_type_descriptor3598);
                        retval.type = this.input.getTokenStream().toString(this.input.getTreeAdaptor().getTokenStartIndex(retval.start), this.input.getTreeAdaptor().getTokenStopIndex(retval.start));
                        break;
                    case 2:
                        this.match(this.input, 16, FOLLOW_CLASS_DESCRIPTOR_in_nonvoid_type_descriptor3606);
                        retval.type = this.input.getTokenStream().toString(this.input.getTreeAdaptor().getTokenStartIndex(retval.start), this.input.getTreeAdaptor().getTokenStopIndex(retval.start));
                        break;
                    case 3:
                        this.pushFollow(FOLLOW_array_descriptor_in_nonvoid_type_descriptor3614);
                        array_descriptor214 = this.array_descriptor();
                        --this.state._fsp;
                        retval.type = array_descriptor214;
                }
            } catch (RecognitionException var8) {
                RecognitionException re = var8;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return retval;
        } finally {
            ;
        }
    }

    public final reference_type_descriptor_return reference_type_descriptor() throws RecognitionException {
        reference_type_descriptor_return retval = new reference_type_descriptor_return();
        retval.start = this.input.LT(1);
        String array_descriptor215 = null;

        try {
            try {
                int alt42 = 0;
                int LA42_0 = this.input.LA(1);
                if (LA42_0 == 16) {
                    alt42 = 1;
                } else {
                    if (LA42_0 != 8) {
                        NoViableAltException nvae = new NoViableAltException("", 42, 0, this.input);
                        throw nvae;
                    }

                    alt42 = 2;
                }

                switch (alt42) {
                    case 1:
                        this.match(this.input, 16, FOLLOW_CLASS_DESCRIPTOR_in_reference_type_descriptor3635);
                        retval.type = this.input.getTokenStream().toString(this.input.getTreeAdaptor().getTokenStartIndex(retval.start), this.input.getTreeAdaptor().getTokenStopIndex(retval.start));
                        break;
                    case 2:
                        this.pushFollow(FOLLOW_array_descriptor_in_reference_type_descriptor3643);
                        array_descriptor215 = this.array_descriptor();
                        --this.state._fsp;
                        retval.type = array_descriptor215;
                }
            } catch (RecognitionException var9) {
                RecognitionException re = var9;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return retval;
        } finally {
            ;
        }
    }

    public final String type_descriptor() throws RecognitionException {
        String type = null;
        TreeRuleReturnScope nonvoid_type_descriptor216 = null;

        try {
            try {
                int alt43 = 0;
                int LA43_0 = this.input.LA(1);
                if (LA43_0 == 215) {
                    alt43 = 1;
                } else {
                    if (LA43_0 != 8 && LA43_0 != 16 && LA43_0 != 202) {
                        NoViableAltException nvae = new NoViableAltException("", 43, 0, this.input);
                        throw nvae;
                    }

                    alt43 = 2;
                }

                switch (alt43) {
                    case 1:
                        this.match(this.input, 215, FOLLOW_VOID_TYPE_in_type_descriptor3663);
                        type = "V";
                        break;
                    case 2:
                        this.pushFollow(FOLLOW_nonvoid_type_descriptor_in_type_descriptor3671);
                        nonvoid_type_descriptor216 = this.nonvoid_type_descriptor();
                        --this.state._fsp;
                        type = nonvoid_type_descriptor216 != null ? ((nonvoid_type_descriptor_return)nonvoid_type_descriptor216).type : null;
                }
            } catch (RecognitionException var9) {
                RecognitionException re = var9;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return type;
        } finally {
            ;
        }
    }

    public final short short_integral_literal() throws RecognitionException {
        short value = 0;
        long long_literal217 = 0L;

        try {
            try {
                int alt44 = 0;
                switch (this.input.LA(1)) {
                    case 12:
                        alt44 = 5;
                        break;
                    case 15:
                        alt44 = 4;
                        break;
                    case 95:
                        alt44 = 2;
                        break;
                    case 189:
                        alt44 = 1;
                        break;
                    case 207:
                        alt44 = 3;
                        break;
                    default:
                        NoViableAltException nvae = new NoViableAltException("", 44, 0, this.input);
                        throw nvae;
                }

                switch (alt44) {
                    case 1:
                        this.pushFollow(FOLLOW_long_literal_in_short_integral_literal3689);
                        long_literal217 = this.long_literal();
                        --this.state._fsp;
                        LiteralTools.checkShort(long_literal217);
                        value = (short)((int)long_literal217);
                        break;
                    case 2:
                        this.pushFollow(FOLLOW_integer_literal_in_short_integral_literal3701);
                        int integer_literal218 = this.integer_literal();
                        --this.state._fsp;
                        LiteralTools.checkShort((long)integer_literal218);
                        value = (short)integer_literal218;
                        break;
                    case 3:
                        this.pushFollow(FOLLOW_short_literal_in_short_integral_literal3713);
                        short short_literal219 = this.short_literal();
                        --this.state._fsp;
                        value = short_literal219;
                        break;
                    case 4:
                        this.pushFollow(FOLLOW_char_literal_in_short_integral_literal3721);
                        char char_literal220 = this.char_literal();
                        --this.state._fsp;
                        value = (short)char_literal220;
                        break;
                    case 5:
                        this.pushFollow(FOLLOW_byte_literal_in_short_integral_literal3729);
                        byte byte_literal221 = this.byte_literal();
                        --this.state._fsp;
                        value = (short)byte_literal221;
                }
            } catch (RecognitionException var13) {
                RecognitionException re = var13;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return value;
        } finally {
            ;
        }
    }

    public final int integral_literal() throws RecognitionException {
        int value = 0;
        long long_literal222 = 0L;

        try {
            try {
                int alt45 = 0;
                switch (this.input.LA(1)) {
                    case 12:
                        alt45 = 4;
                        break;
                    case 95:
                        alt45 = 2;
                        break;
                    case 189:
                        alt45 = 1;
                        break;
                    case 207:
                        alt45 = 3;
                        break;
                    default:
                        NoViableAltException nvae = new NoViableAltException("", 45, 0, this.input);
                        throw nvae;
                }

                switch (alt45) {
                    case 1:
                        this.pushFollow(FOLLOW_long_literal_in_integral_literal3744);
                        long_literal222 = this.long_literal();
                        --this.state._fsp;
                        LiteralTools.checkInt(long_literal222);
                        value = (int)long_literal222;
                        break;
                    case 2:
                        this.pushFollow(FOLLOW_integer_literal_in_integral_literal3756);
                        int integer_literal223 = this.integer_literal();
                        --this.state._fsp;
                        value = integer_literal223;
                        break;
                    case 3:
                        this.pushFollow(FOLLOW_short_literal_in_integral_literal3764);
                        short short_literal224 = this.short_literal();
                        --this.state._fsp;
                        value = short_literal224;
                        break;
                    case 4:
                        this.pushFollow(FOLLOW_byte_literal_in_integral_literal3772);
                        byte byte_literal225 = this.byte_literal();
                        --this.state._fsp;
                        value = byte_literal225;
                }
            } catch (RecognitionException var12) {
                RecognitionException re = var12;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return value;
        } finally {
            ;
        }
    }

    public final int integer_literal() throws RecognitionException {
        int value = 0;
        CommonTree INTEGER_LITERAL226 = null;

        try {
            try {
                INTEGER_LITERAL226 = (CommonTree)this.match(this.input, 95, FOLLOW_INTEGER_LITERAL_in_integer_literal3788);
                value = LiteralTools.parseInt(INTEGER_LITERAL226 != null ? INTEGER_LITERAL226.getText() : null);
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return value;
        } finally {
            ;
        }
    }

    public final long long_literal() throws RecognitionException {
        long value = 0L;
        CommonTree LONG_LITERAL227 = null;

        try {
            try {
                LONG_LITERAL227 = (CommonTree)this.match(this.input, 189, FOLLOW_LONG_LITERAL_in_long_literal3803);
                value = LiteralTools.parseLong(LONG_LITERAL227 != null ? LONG_LITERAL227.getText() : null);
            } catch (RecognitionException var8) {
                RecognitionException re = var8;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return value;
        } finally {
            ;
        }
    }

    public final short short_literal() throws RecognitionException {
        short value = 0;
        CommonTree SHORT_LITERAL228 = null;

        try {
            try {
                SHORT_LITERAL228 = (CommonTree)this.match(this.input, 207, FOLLOW_SHORT_LITERAL_in_short_literal3818);
                value = LiteralTools.parseShort(SHORT_LITERAL228 != null ? SHORT_LITERAL228.getText() : null);
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return value;
        } finally {
            ;
        }
    }

    public final byte byte_literal() throws RecognitionException {
        byte value = 0;
        CommonTree BYTE_LITERAL229 = null;

        try {
            try {
                BYTE_LITERAL229 = (CommonTree)this.match(this.input, 12, FOLLOW_BYTE_LITERAL_in_byte_literal3833);
                value = LiteralTools.parseByte(BYTE_LITERAL229 != null ? BYTE_LITERAL229.getText() : null);
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return value;
        } finally {
            ;
        }
    }

    public final float float_literal() throws RecognitionException {
        float value = 0.0F;
        CommonTree FLOAT_LITERAL230 = null;

        try {
            try {
                FLOAT_LITERAL230 = (CommonTree)this.match(this.input, 39, FOLLOW_FLOAT_LITERAL_in_float_literal3848);
                value = LiteralTools.parseFloat(FLOAT_LITERAL230 != null ? FLOAT_LITERAL230.getText() : null);
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return value;
        } finally {
            ;
        }
    }

    public final double double_literal() throws RecognitionException {
        double value = 0.0;
        CommonTree DOUBLE_LITERAL231 = null;

        try {
            try {
                DOUBLE_LITERAL231 = (CommonTree)this.match(this.input, 23, FOLLOW_DOUBLE_LITERAL_in_double_literal3863);
                value = LiteralTools.parseDouble(DOUBLE_LITERAL231 != null ? DOUBLE_LITERAL231.getText() : null);
            } catch (RecognitionException var8) {
                RecognitionException re = var8;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return value;
        } finally {
            ;
        }
    }

    public final char char_literal() throws RecognitionException {
        char value = 0;
        CommonTree CHAR_LITERAL232 = null;

        try {
            try {
                CHAR_LITERAL232 = (CommonTree)this.match(this.input, 15, FOLLOW_CHAR_LITERAL_in_char_literal3878);
                value = (CHAR_LITERAL232 != null ? CHAR_LITERAL232.getText() : null).charAt(1);
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return value;
        } finally {
            ;
        }
    }

    public final String string_literal() throws RecognitionException {
        String value = null;
        CommonTree STRING_LITERAL233 = null;

        try {
            try {
                STRING_LITERAL233 = (CommonTree)this.match(this.input, 211, FOLLOW_STRING_LITERAL_in_string_literal3893);
                value = STRING_LITERAL233 != null ? STRING_LITERAL233.getText() : null;
                value = value.substring(1, value.length() - 1);
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return value;
        } finally {
            ;
        }
    }

    public final boolean bool_literal() throws RecognitionException {
        boolean value = false;
        CommonTree BOOL_LITERAL234 = null;

        try {
            try {
                BOOL_LITERAL234 = (CommonTree)this.match(this.input, 11, FOLLOW_BOOL_LITERAL_in_bool_literal3912);
                value = Boolean.parseBoolean(BOOL_LITERAL234 != null ? BOOL_LITERAL234.getText() : null);
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return value;
        } finally {
            ;
        }
    }

    public final List<EncodedValue> array_literal() throws RecognitionException {
        List<EncodedValue> elements = null;
        ImmutableEncodedValue literal235 = null;

        try {
            try {
                elements = Lists.newArrayList();
                this.match(this.input, 110, FOLLOW_I_ENCODED_ARRAY_in_array_literal3934);
                if (this.input.LA(1) == 2) {
                    this.match(this.input, 2, (BitSet)null);

                    while(true) {
                        int alt46 = 2;
                        int LA46_0 = this.input.LA(1);
                        if (LA46_0 == 8 || LA46_0 >= 11 && LA46_0 <= 12 || LA46_0 >= 15 && LA46_0 <= 16 || LA46_0 == 23 || LA46_0 == 39 || LA46_0 == 95 || LA46_0 >= 110 && LA46_0 <= 114 || LA46_0 == 128 || LA46_0 == 183 || LA46_0 == 189 || LA46_0 == 195 || LA46_0 == 202 || LA46_0 == 207 || LA46_0 == 211 || LA46_0 == 215) {
                            alt46 = 1;
                        }

                        switch (alt46) {
                            case 1:
                                this.pushFollow(FOLLOW_literal_in_array_literal3937);
                                literal235 = this.literal();
                                --this.state._fsp;
                                elements.add(literal235);
                                break;
                            default:
                                this.match(this.input, 3, (BitSet)null);
                                return elements;
                        }
                    }
                }
            } catch (RecognitionException var8) {
                RecognitionException re = var8;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return elements;
        } finally {
            ;
        }
    }

    public final Set<Annotation> annotations() throws RecognitionException {
        Set<Annotation> annotations = null;
        Annotation annotation236 = null;

        try {
            try {
                HashMap<String, Annotation> annotationMap = Maps.newHashMap();
                this.match(this.input, 100, FOLLOW_I_ANNOTATIONS_in_annotations3962);
                if (this.input.LA(1) == 2) {
                    this.match(this.input, 2, (BitSet)null);

                    label63:
                    while(true) {
                        int alt47 = 2;
                        int LA47_0 = this.input.LA(1);
                        if (LA47_0 == 99) {
                            alt47 = 1;
                        }

                        switch (alt47) {
                            case 1:
                                this.pushFollow(FOLLOW_annotation_in_annotations3965);
                                annotation236 = this.annotation();
                                --this.state._fsp;
                                Annotation anno = annotation236;
                                Annotation old = (Annotation)annotationMap.put(anno.getType(), anno);
                                if (old != null) {
                                    throw new SemanticException(this.input, "Multiple annotations of type %s", new Object[]{anno.getType()});
                                }
                                break;
                            default:
                                this.match(this.input, 3, (BitSet)null);
                                break label63;
                        }
                    }
                }

                annotations = ImmutableSet.copyOf(annotationMap.values());
            } catch (RecognitionException var11) {
                RecognitionException re = var11;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return annotations;
        } finally {
            ;
        }
    }

    public final Annotation annotation() throws RecognitionException {
        Annotation annotation = null;
        CommonTree ANNOTATION_VISIBILITY237 = null;
        TreeRuleReturnScope subannotation238 = null;

        try {
            try {
                this.match(this.input, 99, FOLLOW_I_ANNOTATION_in_annotation3994);
                this.match(this.input, 2, (BitSet)null);
                ANNOTATION_VISIBILITY237 = (CommonTree)this.match(this.input, 6, FOLLOW_ANNOTATION_VISIBILITY_in_annotation3996);
                this.pushFollow(FOLLOW_subannotation_in_annotation3998);
                subannotation238 = this.subannotation();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                int visibility = AnnotationVisibility.getVisibility(ANNOTATION_VISIBILITY237 != null ? ANNOTATION_VISIBILITY237.getText() : null);
                annotation = new ImmutableAnnotation(visibility, subannotation238 != null ? ((subannotation_return)subannotation238).annotationType : null, subannotation238 != null ? ((subannotation_return)subannotation238).elements : null);
            } catch (RecognitionException var8) {
                RecognitionException re = var8;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return annotation;
        } finally {
            ;
        }
    }

    public final AnnotationElement annotation_element() throws RecognitionException {
        AnnotationElement element = null;
        CommonTree SIMPLE_NAME239 = null;
        ImmutableEncodedValue literal240 = null;

        try {
            try {
                this.match(this.input, 101, FOLLOW_I_ANNOTATION_ELEMENT_in_annotation_element4019);
                this.match(this.input, 2, (BitSet)null);
                SIMPLE_NAME239 = (CommonTree)this.match(this.input, 208, FOLLOW_SIMPLE_NAME_in_annotation_element4021);
                this.pushFollow(FOLLOW_literal_in_annotation_element4023);
                literal240 = this.literal();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                element = new ImmutableAnnotationElement(SIMPLE_NAME239 != null ? SIMPLE_NAME239.getText() : null, literal240);
            } catch (RecognitionException var8) {
                RecognitionException re = var8;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return element;
        } finally {
            ;
        }
    }

    public final subannotation_return subannotation() throws RecognitionException {
        subannotation_return retval = new subannotation_return();
        retval.start = this.input.LT(1);
        CommonTree CLASS_DESCRIPTOR242 = null;
        AnnotationElement annotation_element241 = null;

        try {
            ArrayList<AnnotationElement> elements = Lists.newArrayList();
            this.match(this.input, 183, FOLLOW_I_SUBANNOTATION_in_subannotation4050);
            this.match(this.input, 2, (BitSet)null);
            CLASS_DESCRIPTOR242 = (CommonTree)this.match(this.input, 16, FOLLOW_CLASS_DESCRIPTOR_in_subannotation4060);

            while(true) {
                int alt48 = 2;
                int LA48_0 = this.input.LA(1);
                if (LA48_0 == 101) {
                    alt48 = 1;
                }

                switch (alt48) {
                    case 1:
                        this.pushFollow(FOLLOW_annotation_element_in_subannotation4071);
                        annotation_element241 = this.annotation_element();
                        --this.state._fsp;
                        elements.add(annotation_element241);
                        break;
                    default:
                        this.match(this.input, 3, (BitSet)null);
                        retval.annotationType = CLASS_DESCRIPTOR242 != null ? CLASS_DESCRIPTOR242.getText() : null;
                        retval.elements = elements;
                        return retval;
                }
            }
        } catch (RecognitionException var10) {
            RecognitionException re = var10;
            this.reportError(re);
            this.recover(this.input, re);
            return retval;
        } finally {
            ;
        }
    }

    public final ImmutableFieldReference field_literal() throws RecognitionException {
        ImmutableFieldReference value = null;
        TreeRuleReturnScope field_reference243 = null;

        try {
            try {
                this.match(this.input, 112, FOLLOW_I_ENCODED_FIELD_in_field_literal4110);
                this.match(this.input, 2, (BitSet)null);
                this.pushFollow(FOLLOW_field_reference_in_field_literal4112);
                field_reference243 = this.field_reference();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                value = field_reference243 != null ? ((field_reference_return)field_reference243).fieldReference : null;
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return value;
        } finally {
            ;
        }
    }

    public final ImmutableMethodReference method_literal() throws RecognitionException {
        ImmutableMethodReference value = null;
        ImmutableMethodReference method_reference244 = null;

        try {
            try {
                this.match(this.input, 113, FOLLOW_I_ENCODED_METHOD_in_method_literal4133);
                this.match(this.input, 2, (BitSet)null);
                this.pushFollow(FOLLOW_method_reference_in_method_literal4135);
                method_reference244 = this.method_reference();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                value = method_reference244;
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return value;
        } finally {
            ;
        }
    }

    public final ImmutableFieldReference enum_literal() throws RecognitionException {
        ImmutableFieldReference value = null;
        TreeRuleReturnScope field_reference245 = null;

        try {
            try {
                this.match(this.input, 111, FOLLOW_I_ENCODED_ENUM_in_enum_literal4156);
                this.match(this.input, 2, (BitSet)null);
                this.pushFollow(FOLLOW_field_reference_in_enum_literal4158);
                field_reference245 = this.field_reference();
                --this.state._fsp;
                this.match(this.input, 3, (BitSet)null);
                value = field_reference245 != null ? ((field_reference_return)field_reference245).fieldReference : null;
            } catch (RecognitionException var7) {
                RecognitionException re = var7;
                this.reportError(re);
                this.recover(this.input, re);
            }

            return value;
        } finally {
            ;
        }
    }

    public static class subannotation_return extends TreeRuleReturnScope {
        public String annotationType;
        public List<AnnotationElement> elements;

        public subannotation_return() {
        }
    }

    public static class reference_type_descriptor_return extends TreeRuleReturnScope {
        public String type;

        public reference_type_descriptor_return() {
        }
    }

    public static class nonvoid_type_descriptor_return extends TreeRuleReturnScope {
        public String type;

        public nonvoid_type_descriptor_return() {
        }
    }

    public static class instruction_return extends TreeRuleReturnScope {
        public instruction_return() {
        }
    }

    public static class register_range_return extends TreeRuleReturnScope {
        public int startRegister;
        public int endRegister;

        public register_range_return() {
        }
    }

    public static class register_list_return extends TreeRuleReturnScope {
        public byte[] registers;
        public byte registerCount;

        public register_list_return() {
        }
    }

    public static class registers_directive_return extends TreeRuleReturnScope {
        public boolean isLocalsDirective;
        public int registers;

        public registers_directive_return() {
        }
    }

    public static class field_reference_return extends TreeRuleReturnScope {
        public ImmutableFieldReference fieldReference;

        public field_reference_return() {
        }
    }

    public static class method_handle_type_return extends TreeRuleReturnScope {
        public int methodHandleType;

        public method_handle_type_return() {
        }
    }

    public static class method_name_and_prototype_return extends TreeRuleReturnScope {
        public String name;
        public List<SmaliMethodParameter> parameters;
        public String returnType;

        public method_name_and_prototype_return() {
        }
    }

    protected static class method_scope {
        boolean isStatic;
        int totalMethodRegisters;
        int methodParameterRegisters;
        MethodImplementationBuilder methodBuilder;

        protected method_scope() {
        }
    }

    public static class access_or_restriction_list_return extends TreeRuleReturnScope {
        public int value;
        public Set<HiddenApiRestriction> hiddenApiRestrictions;

        public access_or_restriction_list_return() {
        }
    }

    public static class class_spec_return extends TreeRuleReturnScope {
        public String type;
        public int accessFlags;

        public class_spec_return() {
        }
    }

    public static class header_return extends TreeRuleReturnScope {
        public String classType;
        public int accessFlags;
        public String superType;
        public List<String> implementsList;
        public String sourceSpec;

        public header_return() {
        }
    }
}
